Internet软件分发单位是“软件包”,它由包含.INF文件或软件分发.OSD文件(或两者都包括)的.CAB文件所组成。一个分发单位也可以包含软件组件,如ActiveX控件,DLL文件等。
1、Inf文件编写
INF文件是一个文本文件,指定运行控件所需要下载或者呈交的文件(比如.DLL或者其它.OCX)。一个.INF文件就捆绑了.CAB压缩文件所有的必须文件。 缺省情况下,与现有硬盘中文件版本号相同的文件不被下载。INF文件如下:
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
FT_ND_API.dll=FT_ND_API.dll
DeanUSBKey.dll=DeanUSBKey.dll
[FT_ND_API.dll]
file-win32-x86=thiscab
DestDir=11
FileVersion=1,0,6,413
[DeanUSBKey.dll]
file-win32-x86=thiscab
RegisterServer=yes
clsid={4F3320E4-4B66-4C85-8538-6E17699AAB46}
DestDir=11
FileVersion=1,0,0,1
[RegisterFiles]
%11%/DeanUSBKey.dll
说明:
"thiscab" 是一个关键字,指包含该INF的CAB文件。也可以从网上下载所需要的DLL文件,只要指定一个HTTP 网址即可,如:
file-win32-x86=http://www.chengdujob.net/activex/DeanUSBKey.DLL
关键字"file-win32-x86"指定平台是x86。
"FileVersion"文件版本号。
"DestDir"指的是装载目录或者文件的地址: 11指系统目录 WINDOWS/SYSTEM32;10 指Windows 目录。
2、Cab打包
Windows在系统目录中自带了CAB制作工具IExpress(/WINDOWS/system32/目录下)。打开IExpress:
1)选择“Create new Self Extraction Directive file”,点击下一步。
2)选择“Create compressed files only(ActiveX Installs)”,点击下一步。
3)点击Add,把文件添加(ft_nd_api.dll,DeanUSBKey.dll, duk_usbkey.inf)添加进去,点击下一步。
4)点击Browse,输入.CAB文件的存放地址(包含所取文件名),这里取TestCAB.CAB,并且要选中 “Store files using Long File Name inside Package”。点击下一步。
5)选择“Don’t save”,一直点击下一步,直到完成。
3、自动安装
用浏览器调用ActiveX组件或者发布组件打包文件都需要用OBJECT元素。发布.CAB文件,需要在OBJECT元素的CODEBASE特性引用包含.INF文件的.CAB文件。当访问该页面时,Internet Explorer将自动把.CAB文件作为软件分发单位下载并安装,每次访问时还会自动检测版本并进行更新。注意,浏览器出于安全性考虑,会拦截未经数字认证的控件。修改浏览器设置,在Internet选项-〉安全-〉受信任的站点-〉站点 中添加服务器地址,不要选复选框“对该区域中的所有站点要求服务器验证”。解决浏览器拦截问题,而不用更改浏览器的安全级别。
文章出处:http://www.diybl.com/course/3_program/c++/cppsl/2008829/138472_2.html