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 即可打开
二 、制作签名证书
1、集合签名工具
2、在命令行输入一下命令:
输入三次相同密码,执行结束后得到.pvk及.cer文件
3、运行Cert2Spc.exe,执行得到ENP_ActiveXDLL.spc
4、经过以上,获得签名证书
三、对打包后的CAB进行签名:signtool.exe
1、命令行输入
2、使用数字签名向导对CAB签名
1)选择需要签名的CAB文件
2)选择自定义
3)从文件中选择,X.509证书,选择.cer文件
4)选择私钥文件,输入最开始签名证书中的私钥密码
5)选择哈希算法
6)选择证书.spc
7)写描述+时间戳(可不加)http://timestamp.verisign.com/scripts/timstamp.dll
8)完成
四、JS调用CAB
修改 JS调用OCX的代码:CODEBASE部门修改如下,其余相同,即可安装cab,并注册.ocx,dll,ini在32位系统盘的C:/WINDOWS/SYSTEM32或64位的C:/WINDOWS/SYSWOW64中。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章