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

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

    自Grid++Report报表6.2.2.2版本开始,支持C/S报表免注册DLL报表开发,很方便。同时,也可避免不同版本之间,不兼容的错误,以及不同版本之间的差异。

    一、传统的Dll注册

    需要在安装过程中对 Grid++Report 的两个发布 DLL 进行注册,必须用 regsvr32.exe 程序进行注册操作,在命令行窗口中,执行 regsvr32 命令。

语法如下:

regsvr32 "%FilePath%\gregn6.dll"

regsvr32 "%FilePath%\grdes6.dll"

    二、6.2.2.2版本后续,免注册DLL 报表开发

    1、机制就是通过建立一个与执行EXE文件同名的清单文件(后缀名.manifest),实现Grid++Report发布DLL文件的COM免注册。其原理是,在清单文件中包含有COM组件相关的信息,由它来代替注册表的角色,来指定COM文件路径、COM版本等信息。从而实现直接复制文件发布用Grid++Report开发的软件。

    2、免DLL注册发布的优点

    (1)发布软件时不需写入系统注册表,安装时不需要管理员权限。

    (2)如果一台电脑用了不同版本的Grid++Report,不会发生版本冲突,即避免DLL Hell问题。

    (3)实现绿色发布软件,无需制作安装程序(或用 regsvr32 命令注册dll),通过简单的文件复制即可发布软件。

    三、有关程序的目录的概念

    1、Project directory:例如,D:\MyPro\A1    (项目源文件目录)

    2、Output directory:例如,D:\Program     (EXE输出目录)

    注意:通常二个目录相同。

    3、Project Name项目名:例如,HLserver,生成的EXE文件名:例如,HLserver.exe

    四、建立清单文件XXXX.exe.manifest文件

   1、将清单文件“C:\Grid++Report 6\manifest\YourX86.exe.manifest”复制到程序输出的目录Output directory目录中,例如:D:\Program

    2、将YourX86.exe.manifest,改名:HLserver.exe.manifest

    3、使用纯文本编辑器,打开HLserver.exe.manifest文件:

<?xml version="1.0" encoding="utf-8"?>
<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>

将文本第三行:“YourX86.exe”,改为你的项目EXE文件名“HLserver.exe”:

<?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity name="HLServer.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>

修改后,保存文件。

    4、将Grid++Report 6新版本的二个DLL文件,复制进Output directory:D:\Program目录中

    5、打开Delphi对项目进行编译,在此项环境下的编程后,程序将读取通过将读取HLserver.exe.manifest文件中,标明的Grid++Report 6注册信息。

    6、验证程序,可以使用

    (1)取消注册,建立一个DelReg.bat文件,内容如下

regsvr32 /u "C:\Grid++Report 6\gregn6.dll"
regsvr32 /u "C:\Grid++Report 6\grdes6.dll"

以管理员身份执行。

    7、执行你的项目程序,测试打印成功。

    你可以发布程序了。通过向服务器远程上传、客户动态下载后,正常使用,特方便。

    说明:发布时,一定要将清单文件HLserver.exe.manifest,同版本的gregn6.dll、grdes6.dl文件和项目EXE文件,四个文件一并发布。

其它文章:Windows COM 免注册 manifest 清单文件_

  锐浪报表 Grid++Report 免注册DLL C/S报表开发(二)清单文件manifest分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值