VS2008 ACtivex 制作CAB带 Vcredist_x86.exe 方案

自己写的 OCX或 ACTIVEX需要注册,如果是VS05或VS08开发的,还需要安装相应 的发行包才行
比如;08就需要安装 vcredist08.exe(08); 这个在微软上找或自己的VS安装包中也可以找到

来说说关键的要点;用CAB

需要把我们的开发的OCX和相关DLL打到CAB,同时还要确保客户机上安装 vcredist.exe否则,即使控件安装上了也使用不了的
CAB工具下载http://download.microsoft.com/download/platformsdk/cab/2.0/w98nt42kmexp/en-us/cabsdk.exe
下载后解压到C:\CAB, 然后进CMD, 切换当前路径为 c:\CAB ,操作见下吧

1, cabarc.exe -s 6144 N X.CAB X.ocx X.inf A.dll
意思是: -s 设置大小,6144表示64K, 这个不管它吧
N 表示要创建一个CAB包;
X.CAB 就是生成 的CAB包文件名了
X.OCX即我们的开发的控件文件名了,
X.inf 就是CAB的安装内容,这个有麻烦,放后面说它
A.dll就是我们的控件需要用到的DLL文件,如果有其它的还需要也加在,在后面加空格
一 一加上吧;

2、X.inf 内容
;//下面这三行,照抄就行,主要是版本信息,非特殊不要更改,直接照写就行
[version]
signature="$CHICAGO$"
AdvancedINF=2.0

;//这就是要安装的文件了,包括控件和相关文件
[Add.Code]
X.OCX = X.OCX
A.DLL = A.DLL
;//上面两个是控件所用的

;//下面这行是另外增加的,主要是安装VC发行包(vcredist_x86.exe就是发行包的安装名,见后)
vcredist_x86.exe=vcredist_x86.exe

[X.OCX]
;//指定O.ocx 是从CAB包里获取
file-win32-x86=thiscab

;//x.ocx 的CLASSID信息
clsid={1D73A88F-8621-498F-B7CD-F6485620F3AA}

;//x.ocx文件版本; (就是文件属性里面那个文件版本号)
FileVersion=1,0,0,1

;//是否为自动注册,一般都是需要注册的哟
RegisterServer=yes

[A.DLL]
file-win32-x86=thiscab
;同上了,也可加上版信息
;//
FileVersion = 1,1,1,1



;//这里注意了,发行包安装的信息
[vcredist_x86.exe]
fileVersion=9,0,30729,17
hook=InstallerHook
;//这项并没有设置file-win32-x86的值,因为它并不在CAB里面,这里设置了一HOOK,让HOOK
;//来处理


//发行包的安装来源
[InstallerHook]
;//这里安装默认是在同X.CAB的目录,如果是在网站,可以更改为URL路径
;//如:http://www.x.com/vcredist.cab

file-win32-x86=VCredist.CAB

;//这里就是让CAB自动解压过后,运行CAB包里面的 vcredist_x86.exe
run=%EXTRACT_DIR%\vcredist_x86.exe

配置完毕

这里需要两个CAB,一个是我们的控件 X.cab 另一个是发行包的 VCRedist.CAB 里面只有一个文件 vcredist_x86.cab

( cabarc.exe N VCRedist.cab vcredist_x86.exe ) 运行此命令需设置全路径或切换vcredist_x86.exe所在目录再运行命令

好了,在网页里面,设置控件的 codebase="X.CAB" 安装时会自动下载 vcredist.cab并且安装,但这个是有界面操作的,就是安装的时候需要用户点下一步什么的,并不是安静安装模式。。


另参见MSDN:http://msdn.microsoft.com/en-us/library/aa751974%28VS.85%29.aspx#cabdl

微软的CAB包制作方法:

http://msdn.microsoft.com/en-us/library/aa751974%28VS.85%29.aspx#cabdl

原文地址:https://www.cnblogs.com/memaxiaofeng/p/3275498.html