浅析ActiveX控件的CAB压缩
任凤华
摘 要 本文简单介绍了CAB压缩,以及使用WinCAB将ActiveX控件压缩为CAB文件的具体步骤。
关键词 ActiveX控件;CAB压缩;WinCAB;INF文件
1. 引言
ActiveX控件技术是从OLE基础上发展起来的,是将OLE进行了扩展从而使其适应Intern
et、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="$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=aaaaaaaaaaactivex.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和更早版本使用aaaaaaaaaaactivex.microsoft.com/controls/vc/mfc40.cab外,其他版本都使用aaaaaaaaaaactivex.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. aaaaaaaaaasupport.microsoft.com ,2003.
浅析ActiveX控件的CAB压缩_应用技巧
时间: 2024-09-15 21:02:44
浅析ActiveX控件的CAB压缩_应用技巧的相关文章
DLL+ ActiveX控件+WEB页面调用例子_javascript技巧
一. 概述 因项目需要,开始学习并研究VC.DLL及ActiveX控件,网上资料找了很多,但没一个可用的或者说没一个例子可理解并运行的.没办法,自己研究吧.功夫不负有心人,终有小成了,呵呵,现在把自己学习总结了一下,献给需要的人. DLL(动态链接库): 分WIN32 DLL和MFC DLL ActiveX:分ATL控件和MFC控件两类(也是一个DLL) WEB:JAVASCRIPT 调用-> ActiveX调用-> DLL 完成加法运算并返回值,在页面上显示. 二.开发(VS2008) 1.
自制网页选取本地路径控件(附源码)_实用技巧
用C#开发的一个WEB选取本地目录路径的控件,OBJECT控件嵌入网页后,会列出本地磁盘上目录列表,通过控件JS方法GetDirPath()获取选择的目录路径 代码就不贴了,直接给源码和DEMO 源码和DEMO打包下载:WebDirSelector.rar 注册和使用: 1.打开WebDirSelector解决方案2.在"项目属性->生成"里,将"为COM Interop注册"打上勾,编译后系统会自动注册DLL(或在命令行中用regsvr32注册编译好的Web
asp.net简单页面控件赋值实现方法_实用技巧
本文实例讲述了asp.net简单页面控件赋值的方法.分享给大家供大家参考,具体如下: /// <summary> /// 赋值 表名,控件名,要查询的唯一数据 /// </summary> protected void SetEvaluate(string TableName, string UpName, string Id) { ContentPlaceHolder cph = (ContentPlaceHolder)Page.Master.FindControl("
asp.net的GridView控件使用方法大全_实用技巧
前台.aspx 复制代码 代码如下: <asp:Label ID="tplb" runat="server" Text="总页数:"></asp:Label> <asp:Label ID="lblPageCount" runat="server" Text=""></asp:Label> <asp:Label ID="cur
ASP.NET笔记之广告控件的使用方法_实用技巧
广告控件的使用方法: 广告文件是一个XML文件,广告文件中所有的标签属性被分析后放到adProperties字典中,用以属性编辑. ads.xml 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <!--广告文件是一个XML文件--> <Advertisements> <Ad> <ImageUrl>4rwbgzby.gif</Image
ASP.NET的广告控件AdRotator用法分析_实用技巧
本文实例讲述了ASP.NET的广告控件AdRotator用法.分享给大家供大家参考,具体如下: AdPotator控件常用于在页面上显示广告.它从列表中随机显示一个图片,这个列表可以是存储在单独的XML文件或者数据绑定的数据源中的.无论哪一种,列表都会包含图片的属性.路径及单击图片时链接到的URL.图片将在每次页面加载时更改. 广告文件是一个XML文件,它包含了AdRotator控件显示的与广告有关的信息.该文件的位置和文件名由控件的AdvertisementFile属性指定. 广告文件的位置可
asp.net控件DataList分页用法_实用技巧
本文实例讲述了asp.net控件DataList分页用法.分享给大家供大家参考,具体如下: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ViewState["Page"] = 0; Bangding(); } } //绑定数据 public void Bangding() { PagedDataSource pds = new PagedDataSource(); pds.DataS
WinForm中DataGridView折叠控件【超好看】_实用技巧
刚到一家新公司,领导下发任务要用cs系统做一个表格折叠显示,这真是把我难倒了,自己工作6年一直以来都是做BS的系统.这如果在BS里面那太简单了,JqGrid默认都自带,可是DataGridview不支持折叠啊.自己一点经验没有,怎么办呢?于是上网搜了相关视频,资料,开始学习起来.最后借鉴源码封了这么一个东西,发出来分享下,也能让自己加深印象. 首先不多说,上图.如果大家感谢还不错,请继续往下阅读: 大概的效果就是这样. 上代码. 1.首先重写DataGridview,代码如下: public c
ASP.NET MVC中图表控件的使用方法_实用技巧
微软发布了一个强大的ASP.NET的图表控件,支持丰富的图表选项设置-包括列,点,泡沫,饼图,圆环图,金字塔,漏斗,盒形图,面积,范围,AJAX的互动,以及更多.Microsoft图表控件示例项目包括ASP.NET页的图表样本超过200个.在这篇文章中,我将展示如何在ASP.NET MVC中使用图表控件. 这里介绍一个非常简单的项目,显示了一个类的结果比较.两个字段 - ID(这是唯一的一个学生)和GPA(平均成绩) - 代表一个特定的学生的结果.各种图表结果显示,学生的结果进行比较.我希望把重