锐浪报表 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分析相关推荐

  1. 锐浪报表 Grid++Report 免注册DLL C/S报表开发(一)

    Grid++Report报表,传统的发送方式,除了发布程序以外外,还要为客户注册DLL.由于,多数客户已经使用Win10,Win10在注册Dll时,对权限要求比较严,客户自己注册比较困难,使得软件发布 ...

  2. 锐浪html5,Grid Report

    Grid++Report是一款功能强大的报表设计器,采用VC+COM+ATL+WTL技术,包含报表引擎对象.报表查询显示器.报表打印查看器.报表设计器四大功能组件,可以制作和打印各种复杂的表格,为从事 ...

  3. .NET 程序下锐浪报表 (Grid++ Report) 的绿色发布指南

    在锐浪报表官方为 CSharp 编写的开发文档:"在C#与VB.NET中开始使用说明.txt" 中,关于发布项目是这么描述的: ★发布你的项目,用VS.NET制作安装程序: 1.先 ...

  4. ​锐浪报表 Grid++Report HTML格式文本,win10下划线变删除线​

    锐浪报表 Grid++Report  HTML格式文本,在win10下划线变删除线 锐浪报表 Grid++Report  打印合同,一真使用HTML格式文本,已经好几年了.今天一台华为win10手提电 ...

  5. 锐浪报表 Grid++Report 导出其它格式文件

    锐浪报表 Grid++Report 导出其它格式文件 Grid++Report控件设计的报表,不仅可以打印,还可以导出8种格式的报表文件. 在Grid++Report的打印浏览中,有指定导出文件的对话 ...

  6. oracle查看所有报表,Oracle Report Viewer 以及怎么查看Oracle 报表

    Oracle Report Viewer 以及如何查看Oracle 报表 Oracle Report Viewer 以及如何查看Oracle 报表 今天领导提出了个问题,如何查看Oracle 报表输出 ...

  7. 横向合计代码 锐浪报表_锐浪报表/Grid++Report/V5.8/6.0非常好注册正式版

    可选:C/S或B/S一个 简介: Grid++Report 是一款高性能高效率的报表开发工具,既可开发桌面软件的报表与打印系统,也可开发WEB(B/S)软件的报表与打印系统.提供一个具有超强数据展现功 ...

  8. 锐浪报表(Grid++Report)实现动态图片链接

    使用锐浪报表配置打印模板的时候,需要链接到网络图片,拖出图片控件. 之后在初始化加载脚本里面填上下面的代码 var paraImgPath = Report.ParameterByName(" ...

  9. 锐浪报表 Grid++Report 部件框 (长文字的) 跨页断句

    "跨页断句"实现长篇幅文字跨页显示,满足参数设置: 1.必须将部件框的"可伸展"属性设为"是". 2.部件框框所在的报表节的"可伸 ...

  10. Windows COM 免注册 manifest 清单文件

    一.原理 XP以上的操作系统支持COM免注册技术,操作系统在加载EXE时会自动扫描是否包含配套的manifest信息,若有则读取manifest内容加载组件,否则读取注册表. manifest描述了E ...

最新文章

  1. 从视觉到语言:半监督式学习的大规模实际运用
  2. 破windows xp登陆密码
  3. 周末想找个地方敲代码_观看我们的代码游戏,全周末直播
  4. 山哥新作:架构师必备技能之业务分析
  5. Visual Studio 2008 每日提示(十)
  6. 蓝桥杯-明码 bitset初识
  7. 《高质量程序设计指南:C++/C语言》面试题整理
  8. 国税报表html,国税纳税申报表在哪里打印
  9. 优秀课程案例:使用Scratch制作俄罗斯方块哈利·波特魔法消除版!
  10. 在线编辑Word——插入表格
  11. 摄影常用词:光圈、快门、曝光、底片、ISO、焦距、景深
  12. Ubuntu安装搜 狗输入法,最完整的步骤
  13. Mathmatica的学习打卡day 16
  14. 头脑风暴问题:玻璃水果盘的用法
  15. 从本地管理员到域管理员提权
  16. 分享一个便宜又好用的代理ip
  17. kaldi理解WFST,HCLG,lattice
  18. 24lc01资料准备
  19. 公安部紧急预警!新型“美团短信”诈骗,目前已多人中招
  20. 地震发生时,我们如何避震自救?

热门文章

  1. 关于填写软件著作权申请表时源程序量总行数怎么确认的问题?
  2. java 枚举 命名规范_JAVA命名规范
  3. python自动生成采集规则_python 织梦自动采集更新脚本
  4. Android widget之CompoundButton
  5. CommandName属性简介
  6. 雨滴桌面显示html,使用雨滴rainmeter打造炫酷桌面的方法!
  7. java 球弹跳的高度_关于皮球弹跳高度的几个问题
  8. [WEB] 详解Ajax实现网页数据异步更新并实时自动刷新
  9. 实时音频编解码之二编码学数学知识
  10. DOS-设置开机自启动