OCX打成CBA包并实现自动安装与自动升级

近来手上有个项目,需要使用ocx控件
(ocx是什么? [url]http://baike.baidu.com/view/393671.htm[/url])
在生产过程中我遇到了如下问题.
1. 如何让 ocx 自动安装?
a) 如何签名?
b) 如何打包?
c) 如何安装到指定目录?
2. 如何让 ocx 自动升级?

下面是我解决这些问题的方法.(该项目已发布,所有代码都可正常运行.)

一、ocx 签名
购买及使用:
[url]http://verisign.itrus.com.cn/html/fuwuyuzhichi/changyongwendang/411.html[/url]
非购买的我没有发一现个可用的 -_-
注:OCX与 CAB包都要签名

二、 打包成CAB包
这里我尝试了二个方法
a) Cabarc (该方法在我把系统升级为 win7 64后出错,原因没能找到.)
运行 > CMD
cd C:\CAB
cabarc n ocx.cab -s 6144 -m LZX:21 ocx.ocx 1.dll 2.dll 1.lang ocx.inf

n ocx.cab 新生成 ocx.cab 包
-s 6144 Reserve space in cabinet for signing (e.g. -s 6144 reserves 6K bytes)
-m LZX:21压缩模式 最高压缩 Set compression type [LZX:<15..21>|MSZIP|NONE], (default is MSZIP)
ocx.ocx 1.dll 2.dll 1.lang ocx.inf 是当前目录下 你要找进CBA包的 文件
b) MakeCAB (上个方法被废了后改用该方法,感觉比上个方法好用)
运行 > CMD
cd C:\CAB
MakeCAB /F list.txt /d compressiontype=lzx /d compressionmemory=21 /d cabinetnametemplate= ocx.cab

/F list.txt 将要打包的文件目录内容如下
ocx.ocx
1.dll
2.dll
1.lang
ocx.inf
/d compressiontype=lzx /d compressionmemory=21压缩模式 最高压缩
/d cabinetnametemplate= ocx.cab 打包后的文件名 我在当前目录 disk1 下打到了该文件

三、 安装(ocx.inf)
ocx.inf 决定了,你文件的版本 安装目录等许多重要信息
关于inf文件细节 大家可以看下
[url] http://wenku.baidu.com/view/c136df4633687e21af45a97f.html[/url]
下面给出一个简单的实例

[version]
signature="$CHICAGO$"
AdvancedINF=1,0,0,4

[DefaultInstall]
CopyFiles=install.files
RegisterOCXs=RegisterFiles

[RInstallApplicationFiles]
DelFiles=install.files
CopyFiles=install.files
RegisterOCXs=RegisterFiles

[DestinationDirs]
install.files=30,Program Files\XOCX

[SourceDisksNames]
1=%DiskName%,ocx.cab,1

[install.files]
ocx.ocx 1.dll 2.dll 1.lang
[ocx.ocx]
file-win32-x86=thiscab
RegisterServer=yes
clsid={917179C9-F725-4484-BADD-6D19A3DE5D82}
FileVersion=1,0,0,3
DestDir=30,Program Files\XOCX

[1.dll]
RegisterServer=yes
DestDir=30,Program Files\XOCX

[2.dll]
RegisterServer=yes
DestDir=30,Program Files\XOCX

[1.lang]
RegisterServer=yes
DestDir=30,Program Files\XOCX

[RegisterFiles]
%30%\Program Files\XOCX\ocx.ocx

四、 自动安装与自动升级

<object name="ocx" id="ocx" classid="clsid:917179C9-F725-4484-BADD-6D19A3DE5D82" style="width:100%; height: 100%; " codebase="ocx.cab#version=1,0,0,3"></object>

codebase 指明要从那里下载 该ocx.
#version=1,0,0,3 当前页面使用ocx的版本,如果与 ocx.inf中 [ocx.ocx] FileVersion=1,0,0,3一致. 不一致会要求用户重复安装.

当ocx升级后应该
修改基本版本
修改 ocx.inf中 [ocx.ocx] FileVersion=1,0,0,3 中的值
修改 <object> 中的值
这样当用户再次该页面时会自动安装最新版本的ocx控件
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值