ActiveX控件开发总结(续)

ActiveX控件的打包安装

可以把ActiveX控件打成CAB包,在页面中指定该CAB包的位置,如果目标机器访问页面时,没有安装过此控件,则IE会自动下载此CAB包到目标机器,并进行安装

1、 确认ActiveX控件依赖于哪些DLL

使用vcDEPENDS.EXEMicrosoft 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.exeC:\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

posted @ 2012-09-25 10:15  做一个内心安静的人  阅读(764)  评论(0编辑  收藏  举报