`
marlboro027
  • 浏览: 55206 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

浅析ActiveX控件的CAB压缩(zhuan)

    博客分类:
  • ocx
阅读更多
1. 引言
ActiveX控件技术是从OLE基础上发展起来的,是将OLE进行了扩展[kuo zhan]从而使其适应Internet、Intranet、商业应用[ying yong]程序等的开发。当ActiveX控件的程序代码在Internet上传输[chuan shu]时,使用压缩[ya suo]技术传输[chuan shu]程序代码变得非常有意义。
从 另一方面来看,如果ActiveX控件还调用[tiao yong]到其他的DLL程序模块[mo kuai],那么IE也必须把这些程序下载[xia zai]到本地来。为此,Microsoft采用了惯用的 CAB压缩[ya suo]方法[fang fa],它把ActiveX控件应用[ying yong]程序以及相关的其他文件[wen jian]放在同一个CAB文件[wen jian]中,然后在CODEBASE属性[shu xing]中指定CAB文件[wen jian]的URL路径[lu jing]。 当IE找到CODEBASE属性[shu xing]时,它会自动解析URL地址[di zhi]从而把CAB文件[wen jian]解压到客户[ke hu]机的临时目录,然后注册[zhu ce]有关文件[wen jian],调用[tiao yong]COM API函数[han shu]创建ActiveX控件对象[dui xiang]。这样就完成了ActiveX控件的传输[chuan shu]。
  
2. CAB压缩[ya suo]技术简介
微软[wei ruan]公司在发行 Windows 95、Plus!95等软件[ruan jian]时采用了一种全新的CAB压缩[ya suo]包[bao][ya suo bao]形式,它具有压缩[ya suo]率[ya suo lv]高、安全性[an quan xing]好、不易受到破坏等优点,深受广大用户[yong hu]及软件[ruan jian]制作商的欢迎。许多 用户[yong hu]甚至因此希望[xi wang]将自己的数据[shu ju]文件[wen jian]改用CAB压缩[ya suo]包[bao][ya suo bao]的形式加以压缩[ya suo]、备份[bei fen],以尽可能的减少备份[bei fen]文件[wen jian][bei fen wen jian]所占用的磁盘[ci pan]空间[kong jian],并提高它们的安全性[an quan xing]。目前制作CAB 文件[wen jian]的软件[ruan jian]有主要有Cabarc和WinCAB。
Cabarc是一个用于[yong yu]压缩[ya suo]、列出压缩[ya suo]包[bao][ya suo bao]中的文件[wen jian]、解压CAB文件[wen jian]的工具。Cabarc支持[zhi chi]通配符[tong pei fu]和递归路径[lu jing]搜索[sou suo][lu jing sou suo]。不过Cabarc使用一个类似于常用的压缩[ya suo]工具的命令[ming ling]行[ming ling hang]界面[jie mian][ming ling hang jie mian],
并且有较多的参数[can shu],与现在主流的Windows操作系统[xi tong][cao zuo xi tong]不太协调[xie tiao],使用起来不是很方便。
而WinCAB 是一种可视[ke shi]化[ke shi hua]的全新的CAB压缩[ya suo]包[bao][ya suo bao]制作软件[ruan jian],它具有采用图形[tu xing]界面[jie mian]、支持[zhi chi]分卷压缩[ya suo]、可制作具有自解包[bao]功能的CAB压缩[ya suo]包[bao][ya suo bao](*.EXE文件[wen jian]格式)等优秀功能, 这就从根本上解决了CAB压缩[ya suo]包[bao][ya suo bao]的制作问题[wen ti]。需要注意的是在运行[yun hang]WinCAB.exe时,必须确保[que bao]makecab.exe文件[wen jian]也在相同的目录下。
本文就以WinCAB为例来介绍ActiveX控件的CAB文件[wen jian]的制作过程。

3. 将ActiveX控件压缩[ya suo]成CAB文件[wen jian]
主要步骤有:
1)注册[zhu ce]YourCtl.ocx控件。
2)建立YourCtl.inf文件[wen jian]。
   INF文件[wen jian]的格式如下:(在使用Visual C++6.0的情况[qing kuang]下)
   [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文件[wen jian]中可以找到
   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
  
   这里需要说明[shuo ming]的是上述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版本都有不同的版本号[ban ben hao],这里只介绍常见的两种。 另外mfc42installer的下载[xia zai]路径[lu jing]除了VC4.1和更早版本使用http://activex.microsoft.com/controls/vc/mfc40.cab外,其他版本都使用http://activex.microsoft.com/controls/vc/mfc42.cab。
3)启动[qi dong]WinCAB开始压缩[ya suo]。(其中注意Makecab.exe要在WinCAB目录下)
   i)启动[qi dong]WinCAB,然后执行[zhi hang]“Cabinet”菜单[cai dan]的“New”命令[ming ling]或单击[dan ji]快捷工具栏上的“New cabinet”按钮,准备制作新的CAB压缩[ya suo]包[bao][ya suo bao]。
ii)单击[dan ji]快捷工具栏上的“Add file(s) to cabinet”按钮,打开“Add file(s) to cabinet”对话框[dui hua kuang]。
iii)选择[xuan ze]欲添加到CAB压缩[ya suo]包[bao][ya suo bao]中的文件[wen jian]后单击[dan ji]“打开”按钮,将它们添加到WinCAB的文件[wen jian]列表[lie biao]中。这里只需要添加YourCtl.ocx和YourCtl.inf两个文件[wen jian]。
iv)在WinCAB快捷工具栏的“Cabinet path and name”框中输入[shu ru]或利用“Browse for path and name”按钮指定CAB压缩[ya suo]包[bao][ya suo bao]的路径[lu jing]及文件[wen jian]名[wen jian ming]。
v)在“Cabinet size”栏中指定CAB压缩[ya suo]包[bao][ya suo bao]的尺寸。
vi)在“Compression method”框中选择[xuan ze]合适的压缩[ya suo]方式。
vii)单击[dan ji]“Save cabinet”按钮,WinCAB即会按照用户[yong hu]的要求进行压缩[ya suo]。
viii)压缩[ya suo]完成后,WinCAB会给出一个“WinCAB Report”的报告框,向广大用户[yong hu]报告有关文件[wen jian]个数、压缩[ya suo]前后的文件[wen jian]尺寸、压缩[ya suo]率[ya suo lv]、压缩[ya suo]时间等情况[qing kuang]。至此,一个CAB文件[wen jian]就生成了。
4. 结束语
由于CAB的压缩[ya suo]率[ya suo lv]比我们常用的ARJ、ZIP、RAR等压缩[ya suo]包[bao][ya suo bao]要高许多(约20%),从而进一步的减少了压缩[ya suo]文件[wen jian]所占用的磁盘[ci pan]空间[kong jian],当采用该技术在Internet上传输[chuan shu]ActiveX控件时既减少了网络[wang luo]流量[liu liang],也加快了网页[wang ye]打开的速度。
另外,由于CAB压缩[ya suo]包[bao][ya suo bao]具有“只读[zhi du]”属性[shu xing],在创建完成后即不允许再作任何修改[xiu gai]、删除[shan chu],因此不易受到病毒[bing du]、误操作等问题[wen ti]的影响,安全性[an quan xing]也具有保证,实为广大用户[yong hu]在Windows 下进行文件[wen jian]的压缩[ya suo]、备份[bei fen]工作时的最佳选择[xuan ze]。
注:**基金项目[xiang mu]**,国家973计划,(编号:G1998030600)。
关于证书[zheng shu]和签名     -|zuiwanting 发表于 2006-5-24 9:58:00

\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin下有关于证书[zheng shu]和签名相关工具
1。Makecert.exe ---证书[zheng shu]创建工具
2。Cert2Spc.exe ---发行者证书[zheng shu]测试工具
3。Signcode.exe ---文件[wen jian]签名工具
建立自己的根证书[zheng shu]:
makecert -sk myPK -ss myName -n "CN=LUO31工作室" -r c:\luo31.cer
      sk-表示主题的密钥[mi yao]容器位置[wei zhi],ss-主题的证书[zheng shu]存储名称, n-证书[zheng shu]颁发对象[dui xiang],r-证书[zheng shu]存储位置[wei zhi];
如果你需要导出私钥[si yao]文件[wen jian],请不要使用sk,而换作s,eg:makecert -ss myName -n "CN=LUO31工作室" -sv c:\luo31.pvk -r c:\luo31.cer
建立自根证书[zheng shu]授权[shou quan]的子证书[zheng shu]:
makecert -sk "myPK" -is myName -n "CN=luo31" -$ commercial -ic c:\luo31.cer c:\31.cer
      sk-表示主题的密钥[mi yao]容器位置[wei zhi],is-颁发者的证书[zheng shu]存储名称, n-证书[zheng shu]颁发对象[dui xiang],ic-颁发者的证书[zheng shu]存储位置[wei zhi],-$-授权[shou quan]范围[fan wei](用于[yong yu]代码签名);
使用Cert2Spc生成spc发行者证书[zheng shu](可选):
cert2spc c:\31.cer c:\31.spc
使用signcode为你的程序,库或cab包[bao]签名:
双 击signcode,或在控制[kong zhi]台[kong zhi tai]键入signcode,不带参数[can shu]会启动[qi dong]签名向导[xiang dao]。在第三步选择[xuan ze]“自定义选项[xuan xiang]”,第四步选择[xuan ze]“从文件[wen jian]选择[xuan ze]”选择[xuan ze]31.spc 或31.cer,第五步选择[xuan ze]“CSP中的私钥[si yao]”,在密钥[mi yao]容器中选择[xuan ze]我们定义的myPK,其他步骤默认[mo ren]即可,如果想添加时间戳[shi jian chuo],请在时间戳[shi jian chuo]服务器[fu wu qi]地址[di zhi]上键 入:(免费时间戳[shi jian chuo]认证[ren zheng])http://timestamp.verisign.com/scripts/timstamp.dll ;
完成后,观察你所签名的文件[wen jian]属性[shu xing][wen jian shu xing],应该已经添加数字[shu zi]签名[shu zi qian ming]项

3. ActiveX控件在页面上的引用[yin yong]

<OBJECT id="axGraphOcxSCADA" style="Z-INDEX: 102; LEFT: 160px; WIDTH: 784px; POSITION: absolute; TOP: 80px; HEIGHT: 536px"
    codeBase="GraphOcx.CAB#version=1,0,0,3" classid="clsid:87186EA1-4D89-4F3E-9D25-1F03F0DDDB95"
    name="axGraphOcxSCADA" VIEWASTEXT>
    <PARAM NAME="_Version" VALUE="65536">
    <PARAM NAME="_ExtentX" VALUE="20743">
    <PARAM NAME="_ExtentY" VALUE="14182">
    <PARAM NAME="_StockProps" VALUE="0">
   </OBJECT>


分享到:
评论

相关推荐

    gssdgv-zhuan-ke-master_java_

    《蚂蚁集团开源的Java研发框架——gssdgv-zhuan-ke-master_java_详解》 在现代软件开发中,高效、稳定且易维护的框架是项目成功的关键因素之一。蚂蚁集团作为全球知名的金融科技公司,其开源的Java研发框架——...

    zhuan 2.zip

    在这个名为"zhuan 2.zip"的压缩包中,包含了一个支持移动端的转盘抽奖程序。这个程序的核心是通过JavaScript实现,使得用户可以通过点击来触发抽奖过程,从而增加用户体验的趣味性和参与度。 首先,我们来看“转盘...

    自媒体新媒体软件工具自媒体zhuan钱秘诀资料

    自媒体新媒体软件工具自媒体zhuan钱秘诀资料

    Map_out.rar_Map o_mapgis_mapgis noteo_mapgis zhuan jpg_out

    标题中的"Map_out.rar"可能是指一个RAR压缩文件,它包含了一个名为"Map_out"的文件或目录。"Map o_mapgis_mapgis noteo_mapgis zhuan jpg_out"这部分可能是描述了这个压缩包的主要功能或者过程,即MapGIS的二次开发...

    新建 360压缩 ZIP 文件_1610_

    标题“新建 360压缩 ZIP 文件_1610_”表明这是一个关于使用360压缩工具创建的ZIP文件,其中包含与16进制转换到10进制相关的程序。描述提到“利用masm将16进制的数转为10进制的数,只能进行四位运算,输入一次就行”...

    zhuan_java_untilgw8_android_

    标题 "zhuan_java_untilgw8_android_" 暗示了这是一个关于使用Java语言在UntilGW8平台上开发Android游戏的项目,特别是一款简单的打砖块游戏。在这个项目中,我们可以深入学习到Java编程语言、Android应用开发的基础...

    z zhuan sec_EH4_EH4Z文件转SEC文件_

    标题中的"z zhuan sec_EH4_EH4Z文件转SEC文件_"表明我们正在处理一个涉及到将EH4或EH4Z格式的文件转换为SEC格式的议题。这个过程可能涉及到特定的工具、编程语言或者协议,尤其是在嵌入式系统中,这些文件格式通常与...

    2.6.14 内核移植说明文档(zhuan)

    - **生成的文件**: 编译完成后,可以在`linux-2.6.14/arch/arm/boot/`目录下找到`zImage`文件,这是一个压缩后的内核镜像文件,可以将其下载到目标板的Flash中以供运行。 **5. 启动参数设置** - **问题说明**: 在...

    zhuan-su-eliang.rar_labview 测_labview 测速_labview测速_labview转速测量_转

    在给定的“zhuan-su-eliang.rar”压缩包中,包含了一个名为“zhuan su eliang.vi”的虚拟仪器(VI),这显然是一款用于转速测量的应用程序。 转速测量是机械工程、汽车工业、电力系统等领域中常见的技术需求。...

    ann(zhuan).rar_ANN

    本人转的别人写的人工神经网络的学习体会与感受,真是受益匪浅啊!

    soho网络zhuan钱的体会.doc

    文档标题和描述中提到的是关于个人通过SOHO(Small Office Home Office)网络工作赚钱的体验,标签为“技术”,这表明讨论的核心是如何利用网络技术和自我经营来赚取收入。部分内容中,作者分享了自己从怀疑到加入...

    ban-zhuan.zip_JAVA穷举法搬砖_搬砖_用JAVA穷举法

    在给定的“ban-zhuan.zip_JAVA穷举法搬砖”主题中,我们面对的是一个数学问题,该问题与实际的砖块分配有关。36块砖需要36个人来搬运,其中包括男性、女性和小孩,他们各自有不同的搬运能力。男性每次能搬4块砖,...

    XUAN-ZHUAN-led.zip_旋转LED_旋转LED 自适应_自适应旋转LED

    "XUAN-ZHUAN-led.zip_旋转LED_旋转LED 自适应_自适应旋转LED"这个压缩包文件内容是关于实现旋转LED自适应转速的程序,其核心目标是让LED屏幕上的字幕能够流畅地滚动,并根据设备的转速自动调整滚动速度,以保持最佳...

    zhuan8.rar_kinect_人工势场法

    主要用于路径规划,程序读入之初,需要先读入Kinect相机拍摄的深度图像。

    编码器计数

    bai_zhuan=(int)zhuan/100; shi_zhuan=(int)zhuan0/10; ge_zhuan=(int)zhuan; write_data(table[bai_fen]); write_data(table[shi_fen]); write_data(table[ge_fen]); write_data(table[12]); write...

    C#代码重构 - Mr.Fu _Zhuan.mobi

    重构是迅速发现并修复有问题的代码的一种高效的方式。在《代码重构(c # & asp.net版)》中首次提供了在c#和asp.net中进行重构的专业方法,您将学习如何运用重构技术管理和修改代码

    snake-master-cuda8-zhuan_pt.tar

    Deep Snake for Real-Time Instance Segmentation pytorch1.0 cuda8转6个pt

    pdfzhuantxt.rar_pdf txt_pdf zhuan txt_pdfzhuant_pdf转txt_txt转pdf

    PDF转TXT格式是一种常见的文档转换需求,特别是在处理大量文本数据时。这个名为“pdfzhuantxt.rar”的压缩包提供了一个小程序,能够帮助用户将PDF文件转换为纯文本(TXT)格式。PDF(Portable Document Format)是...

    office2003转2007

    压缩包子文件的文件名为“office2003转2007.exe”,这很可能是一个可执行文件,用于在用户的计算机上安装上述转换工具。用户运行此程序后,可能会按照向导指示进行操作,安装必要的组件以确保Office 2003能够处理新...

    zhuan-kai-fa

    标题“zhuan-kai-fa”似乎是在简写或拼音化表示“专开发”,这可能是指专门的软件开发或者技术开源项目。由于没有具体的标签信息,我们将从一般软件开发的角度来探讨相关知识点。 在软件开发领域,"专开发"可以涵盖...

Global site tag (gtag.js) - Google Analytics