从网页上下载控件时制作CAB包的方法

Internet 软 t 软件分发单位是“软件包”,它由包含 .inf 文件或软件分发 (.osd) 文件(或两者都包括)的 CAB 文件 (.cab) 所组成。一个分发单位也可以包含软件组件,如 ActiveX 控件 (.ocx)、.dll 文件、.exe 文件、Java 类文件或小程序。当 Web 页上 OBJECT 元素的 CODEBASE 特性引用包含.inf 文件的 CAB 文件时,Internet Explorer 3.0 和更新的版本将自动把 CAB 文件作为软件分发单位。
第一步:创建一个inf文件:
INF文件是一个文本文件,指定运行控件所需要下载或者呈交的文件(比如DLL或者其它OCX)。
一个INF文件就捆绑了CAB压缩文件所有的必须文件。 缺省情况下,
与现有硬盘中文件版本号相同的文件不被下载。
要了解有关INF文件及其选项(包括如何创建独立于平台的INF文件)的详细情况,
请参考平台软件开发工具包(Platform SDK,)的设置和系统管理服务(Setup and System Management Services)
部分的\Setup API\Overview\INF Files目录下的内容。
下面就以我自己写的一个videoweb.dll为例子。在videoweb.dll中使用到:tdiio.dll,encoder.dll,decoder.dll,tdiio.ini,user.ini,
camer.ini,drivo.ini.
video.inf的例子:
;inf file for videoweb.dll
[version]
signature=$CHICAGO$

[DestinationDirs]
DLLSysCopy=11
IniWinCopy=25

[DefaultInstall]
CopyFiles=DllSysCopy,IniWinCopy
AddReg=videoReg

[DllSysCopy]
tdiio.dll
Decoder.dll
VideoWeb.dll

[IniWinCopy]
camer.ini
user.ini
xvidMP4.ini

[videoReg]
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC},"",%REG_SZ%,"Video Class"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Control
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Implemented Categories
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\InprocServer32,"", %REG_SZ%,"%11%\VideoWeb.dll"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\InprocServer32,"ThreadingModel",%REG-SZ%,"Apartment"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\MiscStatus,"",%REG_SZ%,"0"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\MiscStatus\1,"",%REG_SZ%,"131473"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\ProgID,"",%REG_SZ%,"VideoWeb.1.1"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Programmable
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\ToolboxBitmap32,"",%REG_SZ%,"%11%\VideoWeb.dll,102"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\TypeLib,"",%REG_SZ%,"{FC4352CB-BB55-498C-BB21-E4BAE2FC2584}"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Version,"",%REG_SZ%,"1.0"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\VersionIndependentProgID,"",%REG_SZ%,"VideoWeb.1"
;end of INF file

DestinationDirs:指的是装载目录或者文件的地址: 11 指定为系统目录 WINDOWS/SYSTEM 或者 WINNT/SYSTEM32;
10 规定为窗口目录、WINDOWS或者WINNT。
videoReg:如果是自己写的控件:可以在本地先用regsvr32 xxx.dll注册后,从注册表中找到上面的注册信息。
当然以上仅仅是在internet上分发软件时一个很简单的inf文件,还有更复杂的inf文件。请看SDK。

第二步:把video.inf, tdiio.dll,encoder.dll,decoder.dll,tdiio.ini,user.ini,
camer.ini,drivo.ini.放在一个文件夹中。
第三步:开始制作cab文件,我是用IExpress工具制作的(该工具在winnt\system32目录下面)。
1:选择创建新的自解压指令文件。
2:选择仅创建压缩文件(ActiveX安装)
3:点击添加把你要供别人下载的文件添加
4:点击浏览 输入*.cab文件的存放地址(包含文件名)
5:就随便了
好了制作完成。
现在在你的网页中使用该控件,当别人访问你的网页时,如果他的机子上没有你的控件,浏览器就会自动下载安装。因为你的控件可能没有获得签名
因此得在你的浏览器中把浏览器的安全级别降低。在internet 工具中选择安全,选择自定义。找到下载未签名的ActiveX控件。选择其下面的提示或者启用。
在网页中插入:
<OBJECT classid=clsid:4BDA0AA3-2164-44B7-8A88-208A145F51DC
codebase="video.cab#version=2,0,0,1"
id=Video1 style="HEIGHT: 507px; WIDTH: 718px"></OBJECT>
该句.
注意:得把*.cab 文件你和的网页放在同一目录下。或者在codebase中指定*.cab的路径。

申明

非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

博文欢迎转载,但请给出原文连接。

原文地址:https://www.cnblogs.com/Athrun/p/1160915.html