浅析ActiveX控件的CAB压缩

翻译|其它|编辑:郝浩|2007-08-21 11:13:16.000|阅读 1970 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

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

  
2
CAB  压缩技术简介
     微软公司在发行  Windows 95Plus!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=http://activex.microsoft.com/controls/vc/mfc42.cab
   run= % EXTRACT_DIR % \mfc42.exe
  
  
这里需要说明的是上述  msvcrt.dllmfc42.dllolepro32.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  的压缩率比我们常用的  ARJZIPRAR  等压缩包要高许多(约20%),从而进一步的减少了压缩文件所占用的磁盘空间,当采用该技术在  Internet  上传输  ActiveX  控件时既减少了网络流量,也加快了网页打开的速度。
     另外,由于  CAB  压缩包具有只读属性,在创建完成后即不允许再作任何修改、删除,因此不易受到病毒、误操作等问题的影响,安全性也具有保证,实为广大用户在  Windows  下进行文件的压缩、备份工作时的最佳选择。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:csdn

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP