锐浪报表 Grid++Report 免注册DLL C/S报表开发(二)清单文件manifest分析
锐浪报表 Grid++Report 免注册DLL,通过建立一个与执行EXE文件同名的清单文件(后缀名.manifest),实现Grid++Report发布DLL文件的COM免注册。
其原理是,在清单文件中包含有COM组件相关的信息,由它来代替注册表的角色,来指定COM文件路径、COM版本等信息。从而实现直接复制文件发布用Grid++Report开发的软件。
之前的文章,说明使用纯文本编辑器,修改Lserver.exe.manifest文件中的值。感觉不妥,应该通过XML控件来修改。今天,动手代码上来,完成了。下面的代码备案。
一、清单文件(后缀名.manifest)是个XML文件
<?xml version="1.0"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><assemblyIdentity name="YourX86.exe" version="1.0.0.0" type="win32"/><file name="grdes6.dll"><typelib tlbid="{c5a16330-a084-48c9-bc0f-0d0b37a14123}" version="6.0" helpdir="" resourceid="0" flags="HASDISKIMAGE"/><comClass clsid="{6edd80cb-9f08-4c71-b406-479e5cb80fce}" threadingModel="Apartment" tlbid="{c5a16330-a084-48c9-bc0f-0d0b37a14123}" progid="grdes.GRDesigner.6" description="Grid++Report Designer 6"/></file><file name="gregn6.dll"><typelib tlbid="{4018f953-1bfe-441e-8a04-dc8ba1ff060e}" version="6.0" helpdir="" resourceid="0" flags="HASDISKIMAGE"/><comClass clsid="{f9364159-6aed-4f9c-8baf-d7c7ed6160a8}" threadingModel="Apartment" tlbid="{4018f953-1bfe-441e-8a04-dc8ba1ff060e}" progid="gregn.GridppReport.6" description="GridppReport Class"/><comClass clsid="{1b5ea181-a38d-4f42-88b2-6af74cf6d6c0}" threadingModel="Apartment" tlbid="{4018f953-1bfe-441e-8a04-dc8ba1ff060e}" progid="gregn.GRDisplayViewer.6" description="Grid++Report DisplayViewer 6"/><comClass clsid="{7fd5dc62-ded0-4138-9c48-55f0a0fe7b66}" threadingModel="Apartment" tlbid="{4018f953-1bfe-441e-8a04-dc8ba1ff060e}" progid="gregn.GRDisplayViewerProps.6" description="GRDisplayViewerProps Class"/><comClass clsid="{44cbb5de-5afb-4c3d-8f3f-0f70ca5372ad}" threadingModel="Apartment" tlbid="{4018f953-1bfe-441e-8a04-dc8ba1ff060e}" progid="gregn.GRPrintViewer.6" description="Grid++Report PrintViewer 6"/><comClass clsid="{6ca58cb2-2ad1-4ad0-b3cc-5f5c000bbdee}" threadingModel="Apartment" tlbid="{4018f953-1bfe-441e-8a04-dc8ba1ff060e}" progid="gregn.GRPrintViewerProps.6" description="GRPrintViewerProps Class"/></file>
</assembly>
二、文件分析
通过本人编写的XML分析代码:
XML文件一个根节点:assembly。根目录下有三个子节点,我们要修改的节点名:第一个节点的,名称assemblyIdentity,需要修改属性名:name 的属性值。
三、修改代码
var i,j:integer;nodeList:IXMLNodeList;XMLRootNode,XMLnode1:IXMLNode;sPath,EXEFileName,LoadFileName,SaveFileName,NodeName,NodeText:string;
beginLoadFileName:=ReportPath+'YourX86.exe.manifest';XMLDocument1.FileName := LoadFileName;XMLDocument1.Active := True; {激活}Memo1.Lines.Text := FormatXMLData(XMLDocument1.XML.Text); // 显示原XMLsPath:=DirectoryListBox1.Directory; // 尾部无\with ClientDataSet1 dobeginif RecNo>0 thenEXEFileName:=FieldByName('文件').AsString;end;if ExtractFileExt(EXEFileName)<>'.exe' thenbeginexit;end;SaveFileName:=sPath+'\'+EXEFileName+'.manifest';NodeName:='assemblyIdentity';NodeText:=EXEFileName;Memo1.Lines.Text := FormatXMLData(XMLDocument1.XML.Text); // Memo1 显示格式化的XMLXMLRootNode := XMLDocument1.DocumentElement; // 根节点tryNodeList:=XMLRootNode.ChildNodes; // 第1级fOR I:=0 TO NodeList.Count-1 DO // 子节点数BEGINXMLNode1:=NodeList.Get(i); // 子节点if XMLNode1.NodeName=NodeName thenbeginfor J:=0 to XMLNode1.AttributeNodes.Count-1 do // 节点的属性数循环if XMLNode1.AttributeNodes[j].NodeName='name' thenXMLNode1.AttributeNodes[j].Text:=NodeText;end;end;exceptend;Memo2.Lines.Text := FormatXMLData(XMLDocument1.XML.Text); // Memo1 显示格式化的XMLXMLDocument1.SaveToFile(SaveFileName); // 保存XML文件
end;
四、有关窗口
说明:由于编写的c/s系统,功能窗口达到数百个,需按EXE组成模块,这样,功能模块达到几十个。
因此,必须编写一个,统一快速创建清单的窗口。有利于编程,快速同步清单文件,当Grid++Report升级时,也能快速同步。
窗口完成,可以将几十个EXE,一键完成对应清单的创建。
其它文章:1、Windows COM 免注册 manifest 清单文件2 2、 锐浪报表 Grid++Report 免注册DLL C/S报表开发(一)
锐浪报表 Grid++Report 免注册DLL C/S报表开发(二)清单文件manifest分析相关推荐
- 锐浪报表 Grid++Report 免注册DLL C/S报表开发(一)
Grid++Report报表,传统的发送方式,除了发布程序以外外,还要为客户注册DLL.由于,多数客户已经使用Win10,Win10在注册Dll时,对权限要求比较严,客户自己注册比较困难,使得软件发布 ...
- 锐浪html5,Grid Report
Grid++Report是一款功能强大的报表设计器,采用VC+COM+ATL+WTL技术,包含报表引擎对象.报表查询显示器.报表打印查看器.报表设计器四大功能组件,可以制作和打印各种复杂的表格,为从事 ...
- .NET 程序下锐浪报表 (Grid++ Report) 的绿色发布指南
在锐浪报表官方为 CSharp 编写的开发文档:"在C#与VB.NET中开始使用说明.txt" 中,关于发布项目是这么描述的: ★发布你的项目,用VS.NET制作安装程序: 1.先 ...
- 锐浪报表 Grid++Report HTML格式文本,win10下划线变删除线
锐浪报表 Grid++Report HTML格式文本,在win10下划线变删除线 锐浪报表 Grid++Report 打印合同,一真使用HTML格式文本,已经好几年了.今天一台华为win10手提电 ...
- 锐浪报表 Grid++Report 导出其它格式文件
锐浪报表 Grid++Report 导出其它格式文件 Grid++Report控件设计的报表,不仅可以打印,还可以导出8种格式的报表文件. 在Grid++Report的打印浏览中,有指定导出文件的对话 ...
- oracle查看所有报表,Oracle Report Viewer 以及怎么查看Oracle 报表
Oracle Report Viewer 以及如何查看Oracle 报表 Oracle Report Viewer 以及如何查看Oracle 报表 今天领导提出了个问题,如何查看Oracle 报表输出 ...
- 横向合计代码 锐浪报表_锐浪报表/Grid++Report/V5.8/6.0非常好注册正式版
可选:C/S或B/S一个 简介: Grid++Report 是一款高性能高效率的报表开发工具,既可开发桌面软件的报表与打印系统,也可开发WEB(B/S)软件的报表与打印系统.提供一个具有超强数据展现功 ...
- 锐浪报表(Grid++Report)实现动态图片链接
使用锐浪报表配置打印模板的时候,需要链接到网络图片,拖出图片控件. 之后在初始化加载脚本里面填上下面的代码 var paraImgPath = Report.ParameterByName(" ...
- 锐浪报表 Grid++Report 部件框 (长文字的) 跨页断句
"跨页断句"实现长篇幅文字跨页显示,满足参数设置: 1.必须将部件框的"可伸展"属性设为"是". 2.部件框框所在的报表节的"可伸 ...
- Windows COM 免注册 manifest 清单文件
一.原理 XP以上的操作系统支持COM免注册技术,操作系统在加载EXE时会自动扫描是否包含配套的manifest信息,若有则读取manifest内容加载组件,否则读取注册表. manifest描述了E ...
最新文章
- 从视觉到语言:半监督式学习的大规模实际运用
- 破windows xp登陆密码
- 周末想找个地方敲代码_观看我们的代码游戏,全周末直播
- 山哥新作:架构师必备技能之业务分析
- Visual Studio 2008 每日提示(十)
- 蓝桥杯-明码 bitset初识
- 《高质量程序设计指南:C++/C语言》面试题整理
- 国税报表html,国税纳税申报表在哪里打印
- 优秀课程案例:使用Scratch制作俄罗斯方块哈利·波特魔法消除版!
- 在线编辑Word——插入表格
- 摄影常用词:光圈、快门、曝光、底片、ISO、焦距、景深
- Ubuntu安装搜 狗输入法,最完整的步骤
- Mathmatica的学习打卡day 16
- 头脑风暴问题:玻璃水果盘的用法
- 从本地管理员到域管理员提权
- 分享一个便宜又好用的代理ip
- kaldi理解WFST,HCLG,lattice
- 24lc01资料准备
- 公安部紧急预警!新型“美团短信”诈骗,目前已多人中招
- 地震发生时,我们如何避震自救?