制作cab文件

来源:互联网 发布:java ioc 作用 编辑:程序博客网 时间:2024/04/29 13:41

以前制作的ActiveX控件,由于它不会在Web客户端自动下载安装,每次都要在客户端先将控件注册好了才能运行,因此,使用起来很不方便,特别是当ActiveX控件还需要链接其他DLL动态库的情况,就更麻烦。

而cab文件就正好解决了这方面的困难,它把ActiveX控件应用程序以及相关的其他文件放在同一个CAB文件中,然后在CODEBASE属性中指定CAB文件的URL路径。当IE找到CODEBASE属性时,它会自动解析URL地址从而把CAB文件解压到客户机的临时目录,然后注册有关文件,调用COM API函数创建ActiveX控件对象。这样就完成了ActiveX控件的传输。

制作cab文件得关键是理解里面的inf文件,它包含了对需要安装在客户端上的控件的描述,包括安装路径、控件所包含的文件以及对这些文件的描述。

INF文件的格式如下:(在使用Visual C++6.0的情况下)
[version]
   signature="$CHICAGO$"
   AdvancedINF=2.0
[Add.Code]
   YourCtl.ocx=YourCtl.ocx
   mfc42.dll=mfc42.dll
   msvcrt.dll=msvcrt.dll
   olepro32.dll=olepro32.dll
[YourCtl.ocx]
   file-win32-x86=thiscab
   clsid={YourCtl.ocx的CLSID}  //在YourCtl.odl文件中可以找到
   FileVersion=1,0,0,1
   RegisterServer=yes
[msvcrt.dll]
   FileVersion=6,0,8168,0    
   hook=mfc42installer
[mfc42.dll]
   FileVersion=6,0,8168,0
   hook=mfc42installer
[olepro32.dll]
   FileVersion=5,0,4261,0
   hook=mfc42installer
[mfc42installer]
   file-win32-x86=VALUE=http://activex.microsoft.com/controls/vc/mfc42.cab
   run= % EXTRACT_DIR % /mfc42.exe

目前制作CAB文件的软件有主要有Cabarc和WinCAB。
Cabarc是一个用于压缩、列出压缩包中的文件、解压CAB文件的工具。Cabarc支持通配符和递归路径搜索。不过Cabarc使用一个类似于常用的压缩工具的命令行界面,并且有较多的参数,与现在主流的Windows操作系统不太协调,使用起来不是很方便。而WinCAB是一种可视化的全新的CAB压缩包制作软件,它具有采用图形界面、支持分卷压缩、可制作具有自解包功能的CAB压缩包(*.EXE文件格式)等优秀功能,这就从根本上解决了CAB压缩包的制作问题。需要注意的是在运行WinCAB.exe时,必须确保makecab.exe文件也在相同的目录下。

利用Cabarc命令创建CAB文件格式如下:

C:/MSSDK/BIN/CABARC -s 6144 n MYCTL.CAB NEEDED1.DLL NEEDED2.DLL MYCTL.OCX MYCTL.INF

CABARC 创建一个称为 MYCTL.CAB 的 CAB 文件。
应在包含源文件(INF、OCX 和 DLL 文件)的目录下运行 CABARC。将在 CAB 文件中存档的文件应该按它们在 INF 文件中列出的同一顺序在命令行中列出。在上面的示例中,INF 文件应该将 NEEDED1.DLL 列在第一位,接下来是 NEEDED2.DLL,然后是 MYCTL.OCX。
-s 选项在压缩文件中保留用于代码签名的空间。n 命令指定希望创建 CAB 文件。有关 CABARC 命令和选项的列表,请在命令行上仅键入 CABARC: