<实用>使用Cab包部署ActiveX控件

这是一种最常见的部署ActiveX控件的方式。在MSDN –> Vsiual Studio文档 –> Visual C++文档 –> 参考信息 –> 库参考信息 –> MFC –> Concepts –> MFC Internet Programming Task –> Creating Signed CAB Files For MFC –> Creating a CAB File 中有详细描述。

简单的来说就是下载CabSDK,里面有cabarc等工具,然后创建INF文件,然后用cabarc创建cab文件。最后对cab签名。

1、CabSDK可以在MSDN下载。

2、INF文件的参数和结构 在MSDN –> Web开发 –> Internet Explorer Development –> Content Extenstions –> Content and Component Delivery –> Internet Component Download –> Overviews/Tutorials –> About INF File Architecture 和 Using INF Files中有很详细的描述。

麻烦的是,INF中的目标位置只能是%windir%或者是%windir%/system。不可能是其他的目录,而且加入其它的操作也是一件相对比较复杂的事情。

好在有一个Setup Hooks的机制可以插入执行命令。可以执行任何命令,包括bat,这样就可以把所有的安装操作都写成bat。美中不足的是,安装的时候会有黑色的DOS窗口弹出来,怎么尝试都不能隐藏掉。所以我干脆写了一个Windows小程序,这个小程序是不显示自己的视窗的,同时根据传入的参数,在后台打开一个进程执行bat文件。配置如下: 
[version] 
signature="$CHICAGO$" 
AdvancedINF=2.0 

[Setup Hooks] 
hook1=hook1 
[hook1] 
run=%EXTRACT_DIR%/shell.exe %EXTRACT_DIR%/setup.bat %EXTRACT_DIR%

%EXTRACT_DIR%是Cab临时解压目录,shell.exe是我写的隐藏窗体的后台进程启动外壳。setup.bat是安装控件的脚本,为了让脚本能够得到解压的目录,把%EXTRACT_DIR%作为参数传递进去。脚本里面就可以做各种通用操作了。调试的时候可以用这种命令 
run=%EXTRACT_DIR%/shell.exe %EXTRACT_DIR%/setup.bat %EXTRACT_DIR% > c:/debug.txt

 

3、接下来就是使用cabarc命令创建cab文件和签名。我喜欢使用批处理命令,因为cab里面文件较多,写在批处理命令里面很不方便。所以我一般都把需要打包的文件写入filelist,然后把打包命令写成批处理文件。比如

打包批处理 build.bat 
set PATH=E:/mssdk/mscabsdk/BIN;%PATH% 
cabarc N Release/MSF.cab @cabfilelist.txt 
signcode -v view.pvk -spc view.spc Release/sel.CAB

cabfilelist.txt里面就直接列出需要打包的文件即可,一行一个文件。包括依赖的库文件,inf文件,安装脚本和执行外壳shell.exe。这是我其中一个项目的文件: 
E:/MicrosoftVisualStudio9/VC/redist/x86/Microsoft.VC90.CRT/Microsoft.VC90.CRT.manifest 
E:/MicrosoftVisualStudio9/VC/redist/x86/Microsoft.VC90.CRT/msvcm90.dll 
E:/MicrosoftVisualStudio9/VC/redist/x86/Microsoft.VC90.CRT/msvcp90.dll 
E:/MicrosoftVisualStudio9/VC/redist/x86/Microsoft.VC90.CRT/msvcr90.dll 
E:/MicrosoftVisualStudio9/VC/redist/x86/Microsoft.VC90.MFC/Microsoft.VC90.MFC.manifest 
E:/MicrosoftVisualStudio9/VC/redist/x86/Microsoft.VC90.MFC/mfc90.dll 
E:/MicrosoftVisualStudio9/VC/redist/x86/Microsoft.VC90.MFC/mfc90u.dll 
E:/MicrosoftVisualStudio9/VC/redist/x86/Microsoft.VC90.MFC/mfcm90.dll 
E:/MicrosoftVisualStudio9/VC/redist/x86/Microsoft.VC90.MFC/mfcm90u.dll 
E:/MicrosoftVisualStudio9/VC/redist/x86/Microsoft.VC90.MFCLOC/Microsoft.VC90.MFCLOC.manifest 
E:/MicrosoftVisualStudio9/VC/redist/x86/Microsoft.VC90.MFCLOC/MFC90CHS.dll 
E:/MicrosoftVisualStudio9/VC/redist/x86/Microsoft.VC90.MFCLOC/MFC90ENU.dll 
sel.inf 
setup.bat 
../release/sel.ocx 
../release/shell.exe

没有经过数字证书签名的控件是会被安全拦截的。所以签名十分必要。打包脚本的最后一步就是签名。view.pvk和view.spc就是我自己生成的证书。如何生成证书和安装证书请看我另外一篇文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值