OCX打包CAB并签名的过程

(4) 2024-04-16 20:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说OCX打包CAB并签名的过程,希望能够帮助你!!!。

 

前言

ocx需要依赖dll及ini配置文件,我希望可以自动注册ocx,并将ocx、dll及ini配置文件放入系统文件夹中。所以可以将ocx、dll及ini打包到cab中,当js第一次调用cab时,可以自动安装cab,将ocx,dll及ini注册在系统中。

一、打包CAB

1、编写inf文件,可以直接修改使用

; =========================ENP_ActiveXDLL.inf ======================== 

 ; This .inf file will control the installation of the testOcx 

 [version] 
 ; version signature (same for both NT and Win95) do not remove 
 signature="$CHICAGO$" 
 AdvancedINF=2.0 

 [Add.Code] 

;需要添加的dll及ini
 ENP_ActiveXDLL.ocx=ENP_ActiveXDLL.ocx 
 DB_CSICPay.dll=DB_CSICPay.dll
 DB_CSICPay.ini=DB_CSICPay.ini
 XZ_F10_API.dll=XZ_F10_API.dll
 

 [ENP_ActiveXDLL.ocx] 
 ;"thiscab" 是一个关键字,意指包含该INF的CAB文件。 
 ;"file-win32-x86" 指定平台是 x86。 
 file-win32-x86=thiscab 

 ;"RegisterServer"指改文件是否需要注册,一般情况下只有一个ocx需要注册,但有时也需要注册dll,需要注册时必填,不需要注册时可不写 
 RegisterServer=yes 

 ;"clsid" 指的是要安装控件的CLSID。dll是没有classid的,所以dll不用写classid 
 clsid={22B1C397-92C2-4130-98A2-456FF31B9398} 

 ;"FileVersion"是此文件的版本号,物理文件上右键→属性→详细信息可看到。注意:有的dll详细信息的版本号是空,这时候可以不填写此关键字。 
 FileVersion=1,0,0,1

 ;"DestDir"指的是装载目录或者文件的地址: 11 指定为系统目录 WINDOWS/ /SYSTEM32或 WINDOWS/ /SYSWOW64;
 DestDir=11 

 [DB_CSICPay.dll] 
 file-win32-x86=thiscab 
 DestDir=11 

 [DB_CSICPay.ini] 
 file-win32-x86=thiscab 
 DestDir=11 

 [XZ_F10_API.dll] 
 file-win32-x86=thiscab 
 FileVersion=1,0,0,9 
 DestDir=11 

 [RegisterFiles] 
 ;把需要注册的所有控件或动态链接库的路径写在下面。%11%跟上面的DestDir=11是一样的 
%11%/ENP_ActiveXDLL.ocx

 ; ====================== end of ENP_ActiveXDLL.inf ===================== 

2、iexpress.exe打包工具

这个工具windows系统已经自带了,运行框输入 iexpress 即可打开 

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第1张OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第2张

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第3张
OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第4张

 

 

 

 

 

 

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第5张

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第6张

 

 

 

二 、制作签名证书

1、集合签名工具

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第7张

2、在命令行输入一下命令:

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第8张

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第9张

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第10张

 

输入三次相同密码,执行结束后得到.pvk及.cer文件

3、运行Cert2Spc.exe,执行得到ENP_ActiveXDLL.spc

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第11张

4、经过以上,获得签名证书

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第12张

三、对打包后的CAB进行签名:signtool.exe

1、命令行输入

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第13张

2、使用数字签名向导对CAB签名

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第14张

1)选择需要签名的CAB文件

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第15张

 2)选择自定义

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第16张

 3)从文件中选择,X.509证书,选择.cer文件

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第17张

 4)选择私钥文件,输入最开始签名证书中的私钥密码

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第18张

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第19张

 5)选择哈希算法

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第20张

 6)选择证书.spc

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第21张

 7)写描述+时间戳(可不加)http://timestamp.verisign.com/scripts/timstamp.dll

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第22张

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第23张

 8)完成

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第24张

 OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第25张OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第26张

四、JS调用CAB

修改 JS调用OCX的代码:CODEBASE部门修改如下,其余相同,即可安装cab,并注册.ocx,dll,ini在32位系统盘的C:/WINDOWS/SYSTEM32或64位的C:/WINDOWS/SYSWOW64中。

OCX打包CAB并签名的过程_https://bianchenghao6.com/blog__第27张

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复