zoukankan      html  css  js  c++  java
  • vc6开发ActiveX并发布全攻略(二)(转)

     [背景]

           做过ActiveX控件的朋友都知道,要想把自己做的ActiveX控件功能放在自己的网页上使用,那么用户在客户端就必须进行本地的注册,也就是说用户得首先要把该ActiveX控件(test.ocx)放在本机的%system%/system32下,然后运行DOS工具里面运行regsvr32 test.ocx命令进行注册。但如果真是这么去做的话,那么代表着你处于危险之中了,因为您是通过让用户自己去部署设置环境来达到你的目的,这就失去软件项目本身所存在的价值。那么面对这种情况,我们应该如何解决呢?聪明的你一定会很快就想到,我们可以使用户在客户端自动下载安装该ActiveX控件,这样一来即可以实现我们所想要的功能,又不需要用户自己去部署设置环境,这岂不是一举两得。

    [必备条件]

    一、用于将ActiveX控件进行打包并加数据鉴名的工具集:

    makecert.exe 制作cer格式的证书,即X.509证书,同时可以创建私钥和公钥。

    cert2spc.exe  将cer格式证书转换成spc格式证书,即PKCS #7证书。

    cabarc.exe   将ocx打包成cab。

    signcode.exe 将证书签署到ocx上去。

    chktrust.exe  检查签署证书后的ocx是否正确。

    certmgr.exe 是管理证书用的。

    二、用于进行打包用的ocx控件evS1300.ocx。

    三、用于查看ocx控件的工具ActvxDoc。

    [制作过程]

    一、环境设置

    1、下载makeCAB包,解压到本地目录(如E盘根目录),如查看到如图1所示的工具集,则表示已下载成功:

    (图1:makeCAB包的工具集)

           2、设置系统环境变量,右键单击“我的电脑”à选择“属性”à选择“高级”选项卡,打开如图2所示的系统属性面版块:

    (图2:系统属性版块)

           3、在系统属性版块里单击“环境变量(N)”按钮,打开图3:

    (图3:系统变量)

           4、选择“系统变量(S)”里的“新建(W)”按钮,打开“编辑系统变量”对话框,如图4所示,然后在“变量值(V)”里加入“;E\makeCAB”:

    (图4:编辑系统变量)

    二、将用于打包的OCX控件放在E盘根目录下(本文档使用名为evS1300.ocx的控件来进行介绍),如图5所示,其中evS1300.ocx是本文档进行操作的控件对象,而mfc71.dll、msvcp71.dll、msvcr71.dll这三个文件通常是进行打包时一并打包的文件,但不是必须(推荐一起打包),其可在系统中的system32目录下找到,请自行准备。

    (图5;用于操作的OCX控件路径)

    三、ActiveX发布步骤

    1、单击“开始”à“动行(R)”à输入“cmd”à回车à进入到操作的控件所在的目录,如图6所示:

    (图6:进入E:\evS1300目录)

    2、创建PVK文件(私人密匙文件),在命令行中输入“makecert -sk evS1300 evS1300.pvk -n CN=XXXXXXX公司,然后回车,如图7所示:

    (图7:创建PVK文件)

           3、创建CER文件(公司证书),在命令行中输入“makecert -sk evS1300.pvk evS1300.cer”,然后回车,如图8所示,若出现“Successed”提示,则会在E:\evS1300目录下生成evS1300.cer文件,如图9所示:

    (图8:创建CER文件)

    (图9:生成evS1300.cer)

           4、创建SPC测试软件出版商证明书,在命令行中输入“cert2spc evS1300.cer evS1300.spc”,然后回车,如图10所示:

    (图10:创建SPC测试软件出版商证明书)

           5、创建INF文件,用记录本编辑以下信息

    1. [version]   
    2. signature="$CHINA$"  
    3. AdvancedINF=1.0  
    4.   
    5. [Add.Code]   
    6. evS1300.ocx=evS1300.ocx   
    7. msvcr71.dll=msvcr71.dll   
    8. mfc71.dll=mfc71.dll   
    9. msvcp71.dll=msvcp71.dll   
    10.   
    11. [evS1300.ocx]   
    12. file=thiscab   
    13. clsid={0440906E-9BD6-4F3E-B65A-39E1B339D9DA}   
    14. FileVersion=1,0,0,0  
    15. RegisterServer=yes   
    16.   
    17. [msvcr71.dll]   
    18. file-win32-x86=thiscab   
    19. RegisterServer=no   
    20. DestDir=11  
    21. FileVersion=7,10,3052,4  
    22.   
    23. [mfc71.dll]   
    24. file-win32-x86=thiscab   
    25. RegisterServer=no   
    26. DestDir=11  
    27. FileVersion=7,10,3077,0  
    28.   
    29. [msvcp71.dll]   
    30. file-win32-x86=thiscab   
    31. RegisterServer=no   
    32. DestDir=11  
    33. FileVersion=7,10,3077,0  

         如图11所示,并保存为E:\evS1300\evS1300.inf,如图12所示

     

    (图11:evS1300.inf)

    (图12:保存evS1300.inf)

           在evS1300.inf的内容里,[version][Add.Code]项是必须的,[Add.Code]的键值项的多少取决于以下你所配制项的多少。[msvcr71.dll][mfc71.dll][msvcp71.dll]就是上面我所说不是必须的项,只要你想把msvcr71.dllmfc71.dllmsvcp71.dll包括在发布包里,那这么三项就必须写在inf里,而这三项的具体内容是固定的,可复制过去即可。最为关键的就是[evS1300.ocx]项,其中有clsidFileVersion就是evS1300.ocxclassIdversion,这要求必须一至,否我们发布出去的CAB包时不能在客户端自动更新下载安装。说到这里,那我们如何才能知道evS1300.ocx里面的classIdversion呢?我在上面的必备条件里介绍到有一个用于查看ocx控件的工具ActvxDoc,对,就是用它,我们双击这个文件运行它,此时可以看到图13所示的界面:

    (图13:ActiveX Documenter)

    在图13的界面里,点击“File”à“Open…”,打开您所要查看的OCX控件,如图14所示:

    (图14:打开控件)

    打开了控件之后,我们在界面的右边部位“Class”的下拉框里选择“<all interfaces=""></all>”就可以看到我们想要查找的FileVersionclassId,如图15所示:

    (图15:控件属性)

           6、创建CAB文件,在命令行中输入“cabarc -s 6144 n evS1300.cab msvcr71.dll mfc71.dll msvcp71.dll evS1300.ocx evS1300.inf”,然后回车,如图16所示:

    (图16:创建CAB文件)

           7、使用Code Signing Wizard签署一个CAB文件,首先双击运行工具集里面的signcode.exe(或在命令行里直接输入“signcode”后回车),系统会弹出如图17所示的数字签名向导:

    (图17:数字签名向导)

     

           8、单击“下一步(N)”按钮,来到图18所示,选择要进行数字签名的且已做成CAB包的文件evS1300.cab文件。

     

    (图18:选择CAB包)

    9、选择好CAB包后单击“下一步(N)”按钮,在选择想要的签名类型里选择“自定议(C)”并单击“下一步(N)”按钮,如图19所示:

    (图19:选择签名类型)

           10、接下来单击“从文件选择(F)”按钮,选择刚刚制作的evS1300.cer,如图20所示:


    (图20:选择CER证书)

           11、在图20中单击“下一步(N)”按钮来到图21,然后在图21里选择“CSP中的私钥(K)”。


    (图21:选择私钥的位置)

           12、在图21中单击“下一步(N)”按钮,然后在图22中的散列算法中选择“shal”,并单击“下一步(N)”按钮。


    (图22:选择散列算法)

           13、在“证书路径中的证书”中选择“证书路径中的所有证书,包括根证书(C)”,在“其它证书(可选)”中选择“包括在以下PKCS #7 证书(.p7b)文件中的证书(P):”,并单击“浏览(R”按钮选择evS1300.spc文件,选择完后单击“下一步(N)”按钮,如图23所示:


    (图23:选择其它证书)

           14、接下来在弹出的“数据描述”窗口中输入公司的名称和网址并单击“下一步(N)”按钮,如图24所示:


    (图24:输入数据描述)

           15、现大部份工作都已完成,在接下来的一步当中是可选的操作,其作用只是为CAB加入时间戳,此步骤完全可以不做,如图25所示:(这里我提拱三个免费的代码签名时间戳地址)

      VeriSign:  http://timestamp.verisign.com/scripts/timstamp.dll

      Comodo:  http://timestamp.comodoca.com/authenticode

      GeoTrust/TrustCenter: http://www.trustcenter.de/codesigning/timestamp



    (图25:给数据盖时间戳)

           16、完成,在图25中单击“下一步(N)”按钮便可来到数字签名向导的最后一步,即操作总览,如图26所示,单击“完成”按钮便可大功告成,如图27所示:


    (图26,完成操作总览)



    (图27:签名成功提示)

          CAB工具下载

       转自:http://huangzh.javaeye.com/blog/110834

     

  • 相关阅读:
    LSMW TIPS
    Schedule agreement and Delfor
    Running VL10 in the background 13 Oct
    analyse idoc by creation date
    New Journey Prepare
    EDI error
    CBSN NEWS
    Listen and Write 18th Feb 2019
    Microsoft iSCSI Software Target 快照管理
    通过 Microsoft iSCSI Software Target 提供存储服务
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/1817377.html
Copyright © 2011-2022 走看看