ActiveX控件的打包安装
可以把ActiveX控件打成CAB包,在页面中指定该CAB包的位置,如果目标机器访问页面时,没有安装过此控件,则IE会自动下载此CAB包到目标机器,并进行安装
1、 确认ActiveX控件依赖于哪些DLL
使用vc的DEPENDS.EXE(Microsoft Visual Studio\Common\Tools目录下)打开ocx/dll文件,即可看到其依赖的dll文件
2、 写setup.ini文件
IE就是根据setup.ini文件,来进行控件和相关DLL的下载和安装的。
例如:
[version] --版本信息,都是固定的
; version signature (same for both NT and Win95) do not remove
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code] --要打包的文件
NVS_VAE.ocx=NVS_VAE.ocx
[NVS_VAE.ocx] --文件的信息,其中不需要注册的,clsid可以不写。版本号如果dll的属性中有的,使用其真正的版本号,没有的,可以随便写
file-win32-x86=thiscab
clsid={c8cd5ebc-817b-401f-ab06-05cc55c8d9ee}
FileVersion=1,0,0,1
RegisterServer=yes
[RegisterFiles] --要注册的文件
%11%\NVS_VAE.ocx
需要注意的是,这里面只需要要注册的文件和其依赖的dll文件,资源文件等不需要打包。
3、 使用iexpress进行打包打包
可以使用系统自带的iexpress.exe(C:\WINDOWS\system32目录下)工具进行打包。工具默认是8.3命名格式,会把不符合命名规则的文件名截断,可以在打包过程中选择长命名。
之后都下一步即可。
4、 对CAB包进行签名
1、 制作(购买)证书
正式的证书需要向相关机构购买,可以制作测试的证书,步骤如下:
在Visual Studio的安装目录下,有制作证书和签名的相关工具
E:\Microsoft Visual Studio 8\SDK\v2.0\Bin\ makecert.exe
命令行中执行如下命令来创建测试证书:
E:\Microsoft Visual Studio 8\SDK\v2.0\Bin>makecert.exe -sv D:VAE.pvk -ss VAE -n
"CN=huawei" -$ commercial -r D:VAE.cer
在弹出的窗口中输入证书密钥密码
再次确认密码
证书文件就生成在指定位置了。
2、 对CAB包进行签名
在Visual Studio的安装目录下,有制作证书和签名的相关工具
E:\Microsoft Visual Studio 8\SDK\v2.0\Bin\ signtool.exe
在命令行执行:signtool.exe signwizard命令,会启动签名向导
签名向导:
下一步,选择要打包的CAB文件
下一步选择自定义
下一步选择“从文件选择”,选择前面生成的证书文件
下一步选择“磁盘上的私钥文件”,选择前面生成的私钥文件
下一步输入密码
确定后选择MD5加密
之后一直下一步(根据需要填写内容,也可都默认)
最后再输入一次密码,就成功签名了
5、 页面指定路径
页面中指定CAB包位置和版本号
<BODY>
<OBJECT ID="NVS_VAE" CLASSID="CLSID:c8cd5ebc-817b-401f-ab06-05cc55c8d9ee" codeBase="NVS_VAE.CAB#version=1,0,0,1">
</OBJECT>
</BODY>
访问到此页面,IE自动判断CLSID在目标机器上是否有注册,没有注册重新下载,并注册,有注册,比较版本号,有更新则取根据setup.ini中的版本号进行更新。可以到C:\WINDOWS\Downloaded Program Files目录查看CAB包是否有下载安装。
6、 使用安装程序打包
另外,也可以制作安装程序(可以使用常用的安装程序制作工具,也可以使用VS自带的建立安装部署功能来进行),把安装程序打到CAB包中,这样当IE下载CAB包的客户机上后,会根据setup.ini中的指定执行命令,执行安装程序,由客户自己选择安装路径
脚本如下:
;//这里注意了,发行包安装的信息
[setup.exe]
fileVersion=8.0.50727.42
hook=InstallerHook
;//这项并没有设置file-win32-x86的值,因为它并不在CAB里面,这里设置了一HOOK,让HOOK
;//来处理
//发行包的安装来源
[InstallerHook]
;//这里安装默认是在同X.CAB的目录,如果是在网站,可以更改为URL路径
;//如:http://www.x.com/vcredist.cab
file-win32-x86=NVS_VAE.CAB
;//这里就是让CAB自动解压过后,运行CAB包里面的 setup.exe
run=%EXTRACT_DIR%\setup.exe