欢迎光临

木子屋

标题: 浅析ActiveX控件的CAB压缩

作者: admin

日期: 2006-10-11 11:31 AM

分类: 脚本语言

内容: 摘 要 本文简单介绍了CAB压缩，以及使用WinCAB将ActiveX控件压缩为CAB文件的具体步骤。
关键词 ActiveX控件；CAB压缩；WinCAB；INF文件

1.引言
ActiveX控件技术是从OLE基础上发展起来的，是将OLE进行了扩展从而使其适应Internet、Intranet、商业应用程序等的开发。当ActiveX控件的程序代码在Internet上传输时，使用压缩技术传输程序代码变得非常有意义。
从另一方面来看，如果ActiveX控件还调用到其他的DLL程序模块，那么IE也必须把这些程序下载到本地来。为此，Microsoft采用了惯用的CAB压缩方法，它把ActiveX控件应用程序以及相关的其他文件放在同一个CAB文件中，然后在CODEBASE属性中指定CAB文件的URL路径。当IE找到CODEBASE属性时，它会自动解析URL地址从而把CAB文件解压到客户机的临时目录，然后注册有关文件，调用COM API函数创建ActiveX控件对象。这样就完成了ActiveX控件的传输。

2.CAB压缩技术简介
微软公司在发行Windows 95、Plus!95等软件时采用了一种全新的CAB压缩包形式，它具有压缩率高、安全性好、不易受到破坏等优点，深受广大用户及软件制作商的欢迎。许多用户甚至因此希望将自己的数据文件改用CAB压缩包的形式加以压缩、备份，以尽可能的减少备份文件所占用的磁盘空间，并提高它们的安全性。目前制作CAB文件的软件有主要有Cabarc和WinCAB。
Cabarc是一个用于压缩、列出压缩包中的文件、解压CAB文件的工具。Cabarc支持通配符和递归路径搜索。不过Cabarc使用一个类似于常用的压缩工具的命令行界面，
并且有较多的参数，与现在主流的Windows操作系统不太协调，使用起来不是很方便。
而WinCAB是一种可视化的全新的CAB压缩包制作软件，它具有采用图形界面、支持分卷压缩、可制作具有自解包功能的CAB压缩包（*.EXE文件格式）等优秀功能，这就从根本上解决了CAB压缩包的制作问题。需要注意的是在运行WinCAB.exe时，必须确保makecab.exe文件也在相同的目录下。
本文就以WinCAB为例来介绍ActiveX控件的CAB文件的制作过程。

3． 将ActiveX控件压缩成CAB文件
主要步骤有：
1）注册YourCtl.ocx控件。
2）建立YourCtl.inf文件。
INF文件的格式如下：（在使用Visual C++6.0的情况下）
[version]
signature="$"
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
这里需要说明的是上述msvcrt.dll、mfc42.dll、olepro32.dll的FileVersion是根据VC不同的版本而异的，例如在VC5.0sp3中就应该如下
olepro32.dll 5,0,4230,1
mfc42.dll 4,21,0,7303
msvcrt.dll 5,0,0,7303
每个VC版本都有不同的版本号，这里只介绍常见的两种。 另外mfc42installer的下载路径除了VC4.1和更早版本使用http://activex.microsoft.com/controls/vc/mfc40.cab外，其他版本都使用http://activex.microsoft.com/controls/vc/mfc42.cab。
3）启动WinCAB开始压缩。（其中注意Makecab.exe要在WinCAB目录下）
i）启动WinCAB，然后执行“Cabinet”菜单的“New”命令或单击快捷工具栏上的“New cabinet”按钮，准备制作新的CAB压缩包。
ii）单击快捷工具栏上的“Add file(s) to cabinet”按钮，打开“Add file(s) to cabinet”对话框。
iii）选择欲添加到CAB压缩包中的文件后单击“打开”按钮，将它们添加到WinCAB的文件列表中。这里只需要添加YourCtl.ocx和YourCtl.inf两个文件。
iv）在WinCAB快捷工具栏的“Cabinet path and name”框中输入或利用“Browse for path and name”按钮指定CAB压缩包的路径及文件名。
v）在“Cabinet size”栏中指定CAB压缩包的尺寸。
vi）在“Compression method”框中选择合适的压缩方式。
vii）单击“Save cabinet”按钮，WinCAB即会按照用户的要求进行压缩。
viii）压缩完成后，WinCAB会给出一个“WinCAB Report”的报告框，向广大用户报告有关文件个数、压缩前后的文件尺寸、压缩率、压缩时间等情况。至此，一个CAB文件就生成了。
4． 结束语
由于CAB的压缩率比我们常用的ARJ、ZIP、RAR等压缩包要高许多（约20%），从而进一步的减少了压缩文件所占用的磁盘空间，当采用该技术在Internet上传输ActiveX控件时既减少了网络流量，也加快了网页打开的速度。
另外，由于CAB压缩包具有“只读”属性，在创建完成后即不允许再作任何修改、删除，因此不易受到病毒、误操作等问题的影响，安全性也具有保证，实为广大用户在Windows 下进行文件的压缩、备份工作时的最佳选择。
注：**基金项目**，国家973计划，（编号：G1998030600）。
参考文献
[1]. 潘爱民. COM原理与应用[M].北京:清华大学出版社,1999.
[2]. Packaging ActiveX Controls. http://support.microsoft.com ,2003.

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.547 ms

返回

标题: 浅析ActiveX控件的CAB压缩

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.547 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.563 ms

返回