一、 准备工作
开始前,需要准备好需要打包的ocx文件,以及这个ocx文件依赖的所有文件,包括dll文件、图片等等。比如,本人的ocx文件名是tot.ocx,依赖的文件是如下:
ConfigModule.dll=ConfigModule.dll
DllDeinterlace.dll=DllDeinterlace.dll
H264Play.dll=H264Play.dll
hi_h264dec_v.dll=hi_h264dec_v.dll
NetSdk.dll=NetSdk.dll
StreamReader.dll=StreamReader.dll
打包成cab文件还需要自己手写一个inf文件,这个文件是告诉以后下载cab文件的计算机,要解压哪些文件,怎么注册等等,我是手写的,没有找到自动生成的工具。INF文件是一个文本文件,指定运行控件所需要下载或者呈交的文件(比如DLL或者其它OCX)。一个INF文件就捆绑了CAB压缩文件所有的必须文件。这个文件其实主要是三个部分,第一部分是版本声明,第二部分是包含的文件,第三部分是声明下包含的文件存放的位置。Inf文件的详细内容可以参考以下网址:
本人的inf文件如下:
[version]
signature="$CHICAGO$"
AdvancedINF=1.0
[Add.Code]
tot.ocx=tot.ocx
ConfigModule.dll=ConfigModule.dll
DllDeinterlace.dll=DllDeinterlace.dll
H264Play.dll=H264Play.dll
hi_h264dec_v.dll=hi_h264dec_v.dll
NetSdk.dll=NetSdk.dll
StreamReader.dll=StreamReader.dll
[tot.ocx]
file-win32-x86=thiscab
clsid={95D4CA58-7D68-4098-BD8D-3B9A6BE3DF0F}
RegisterServer=yes
FileVersion=1,0,0,0
[StreamReader.dll]
file-win32-x86=thiscab
RegisterServer=no
DestDir=11
[NetSdk.dll]
file-win32-x86=thiscab
RegisterServer=no
DestDir=11
[hi_h264dec_v.dll]
file-win32-x86=thiscab
RegisterServer=no
DestDir=11
[H264Play.dll]
file-win32-x86=thiscab
RegisterServer=no
DestDir=11
[DllDeinterlace.dll]
file-win32-x86=thiscab
RegisterServer=no
DestDir=11
[ConfigModule.dll]
file-win32-x86=thiscab
RegisterServer=no
DestDir=11
需要注意的地方是ocx控件的名称以及clsid的值要对应。用VS2008中MFC开发的ocx控件的clsid在.idl文件的最后几行,截图如下:
Inf文件搞定了的话,自己准备的文件就齐全了。本人的文件目录截图如下:
好了,接下来就需要准备下打包cab文件需要的各种工具了。
首先,到网上下载makeCAB工具,我已经打包放在网上了,里面是很多的exe工具。
CSDN下载目录:
百度网盘:
文件目录如下:
把这些工具都下载好,准备工作就over了。
二、 打包CAB文件
1、 用Windows自带的iexpress先将你自己准备的各种文件进行打包,目录如下图:
用win7命令行打开iexpress
接下来就是打包的过程了。
要注意把Strore files using选中,网上说不选的话发布会出错。没选中的我也没试过。大家可以尝试下吧。选中后,下一步。
选中Don’t save,然后下一步。
然后会弹出dos窗口显示打包过程,打包完后会自动消失,成功后,弹出如下对话框。
这样的话打包过程搞定了一半,具体签名 密钥设置啊 这些 后面会继续!然后就要用下载的工具继续打包了。
其实这个时候就可以发布控件了,但是要降低IE浏览器的安全配置。
要注意,发布的时候要把后缀名改成小写cab。在html页面中用object调用的时候,
IE的具体配置如下:
由于本项目使用的ActiveX控件是自主研发,因此客户在访问是需要降低客户端IE浏览器的安全配置,否则浏览器将会阻止ActiveX控件的下载,导致无法播放视频和控制球机。
IE浏览器设置如下:
IE版本为IE8
添加信任站点
最后,请关闭浏览器,再次打开,进入网站。
正常情况下的话,浏览器会自动下载你的控件的。