CAB是一种文件压缩格式,把OCX文件(ActiveX插件)压缩成CAB文件是为了发布它,
这种发布方式给人感觉“浏览器会自动安装该插件”,很多朋友钟情于此。
目前流行很多压缩工具,但WINRAR这类工具生成的CAB文件浏览器无法识别。
经过试用,发现用Windows系统文件CABARC来制作CAB是最简单有效的办法,
下面以打印控件Lodop为例,一步步了解制作CAB文件和部署发布的过程:

第一步、判断操作系统是否有CABARC文件
    判断途径如下:
操作系统 开始->运行...->键入命令cmd->键入命令 CABARC
若显示一大段版本声明和命令选项的英文说明,表示系统存在CABARC,如果不存在可以从网上搜一个

或者从这里下载,下载解压后放到操作系统目录下。

第二步、准备ocx文件
    把打印控件Lodop的实体ocx文件复制到C:\test目录下,并起名为Lodop.ocx
注:安装过Lodop的机器中,ocx文件存放在C:\WINDOWS\system32\CAOSOFT_WEB_PRINT_lodop.ocx

或Program Files\MountTaiSoftware\Lodop下。

第三步、制作CAB文件
   在第一步的cmd窗口中,键入如下命令:
CABARC -s 6144 N c:\test\lodop.cab c:\test\lodop.ocx
该命令执行完毕后,在C:\test目录下会看到新生成的Lodop.cab文件。
在这行命令中,CABARC之后有五个参数值,参数之间用空格分隔,
其中 -s 6144 俩参数表示生成的CAB文件以后可以进行代码签名,
如果以后不想签名,该参数可以不加,代码签名是个很纠结的问题,以后细说。

以上这步还有个简单办法,就是把该命令行字串用记事本复制到一个bat文件中,
譬如起名CreateLodopCAB.bat,需要生成CAB文件时双击该bat文件就可。
该办法适合经常发布同一产品的不同版本。

第四步、CAB文件的使用方式一
    插件用CAB发布的最简单办法是页面object对象的codebase直接指向该CAB文件,
把下面这段完整的超文本复制到一个html文件中,起名为demo.html:

<html>
<H1> Lodop CAB File Test Page </H1><p>
<object
classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA"
codebase="lodop.cab#version=5,0,5,7"
width=200
height=100
>
</object>
</html>

把文件demo.html和第三步生成的lodop.cab放到同一个web目录下就ok了。
以上这段代码应该很好理解,其中lodop.cab之前还可以包含web路径,
也就是说插件可以单独部署,通过路径指向具体的部署位置。
现在你把浏览器的URL通过web打开demo.html文件,测试看看是否“自动安装”。

第五步、CAB文件的使用方式二
    页面还可以通过一个inf文件来发布插件,以便部署多个ocx,此时超文本变成如下:

<html>
<H1> Lodop Test Page </H1><p>
<object
classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA"
codebase="lodop.inf"
width=0
height=0
>
</object>
</html>

其中lodop.inf是txt格式,内容如下:

[Add.Code]
lodop.ocx=lodop.ocx [lodop.ocx]
file=lodop.cab
clsid={2105C259-1E0C-4534-8141-A753534CB4CA}
RegisterServer=yes
FileVersion=5,0,5,7

这些代码还算好理解,不用累述。

以上简单几步就实现了网页插件的“自动安装”部署,但遗憾的是,
在实践中这种安装非常“不自动”,因浏览器阻断而安装失败的几率很大。
针对这种情况,无论是著名的Flash还是Lodop,都提供了exe格式的安装程序,

让用户下载后执行安装。当然二者结合起来部署,则是不错的选择!

转:http://blog.sina.com.cn/s/blog_721e77e50100ng1r.html

手把手教你用CAB发布OCX的简单办法的更多相关文章

  1. 手把手教你用npm发布一个包,详细教程

    我们已经实现了路由的自动化构建,但是我们可以看到,一大串代码怼在里面.当然你也可以说,把它封装在一个JS文件里面,然后使用require('./autoRoute.js')给引入进来,那也行.但是,为 ...

  2. 3、手把手教你Extjs5(三)MVVM特性的简单说明

    下面我们来看一下自动生成的代码中的MVVM架构的关系.Main是一个可视的控件,MainController是这个控件的控制类,MainModel是这个控件的模型类. 在上面的图片中,左边是Main. ...

  3. 手把手教你学node.js之一个简单的express应用

    一个简单的express应用 目标 建立一个 lesson1 项目,在其中编写代码.当在浏览器中访问 http://localhost:3000/ 时,输出 Hello World. 挑战 访问 ht ...

  4. 手把手教你如何使用Cocos2d Console 进行html5项目发布

    手把手教你如何使用Cocos2d Console 进行html5项目发布   1.首先需要先安装Cocos2d Console运行需要的工具. 详情参见 这篇文章 http://www.cocoach ...

  5. 手把手教你使用Rollup打包📦并发布自己的工具库🔧

    DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师. 官方网站:devui.design Ng组件库:ng-devui(欢 ...

  6. 手把手教你学Dapr - 6. 发布订阅

    上一篇:手把手教你学Dapr - 5. 状态管理 介绍 发布/订阅模式允许微服务使用消息相互通信.生产者或发布者在不知道哪个应用程序将接收它们的情况下向主题发送消息.这涉及将它们写入输入通道.同样,消 ...

  7. 手把手教你做个人 app

    我们都知道,开发一个app很大程度依赖服务端:服务端提供接口数据,然后我们展示:另外,开发一个app,还需要美工协助切图.没了接口,没了美工,app似乎只能做成单机版或工具类app,真的是这样的吗?先 ...

  8. 推荐!手把手教你使用Git

    推荐!手把手教你使用Git 原文出处: 涂根华的博客   http://blog.jobbole.com/78960/ 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与 ...

  9. 手把手教你在Windows下使用MinGW编译libav(参考libx264的编入)

    转自:http://www.th7.cn/Program/cp/201407/242762.shtml 手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言 ...

随机推荐

  1. python接口自动化测试二十四:上传多个附件,参数化

    # 添加多个附件参数化files = [("1.png", "1.png") ("2.png", "2.png") ]d ...

  2. 2017-2018-2 20155309 南皓芯 Exp7 网络欺诈防范

    实践内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 1,简单应用SET工具建立冒名网站 2.ettercap DNS spoof 3.结合应用两种技术,用 ...

  3. JS高级 - 面向对象1(this,Object ,工厂方式,new )

    面向对象三要素: 封装 继承 多态 1.this 详解,事件处理中this的本质 window this -- 函数属于谁 <script type="text/javascript& ...

  4. hdu 1242 找到朋友最短的时间 (BFS+优先队列)

    找到朋友的最短时间 Sample Input7 8#.#####. //#不能走 a起点 x守卫 r朋友#.a#..r. //r可能不止一个#..#x.....#..#.##...##...#.... ...

  5. hdu 1010 走到终点时刚好花掉所有时间 (DFS + 奇偶性剪枝 )

    题意:输入一个n*m的迷宫,和一个T:可以在迷宫中生存的最大时间.S为起点,D为终点.并且,每个格子只能踩一次,且只能维持一秒,然后该块地板就会塌陷.所以你必须每秒走一步,且到D点时,所用时间为T.用 ...

  6. ajax请求返回json字符串/json对象 处理

    1. 返回json字符串如何处理 $.ajax({ url:xxx, success:function(date){ }, error:function(){ } }); 通过最原始的返回: Prin ...

  7. Unity 之 如何删除Unity项目里面没用的东西??

    选中需要用到的Scene,右键选 Select Dependencies,这样会选出这个场景所有用到的文件,将这些文件导出为 .unitypackage. 用同样的办法就所有用到的几个场景的文件分别导 ...

  8. [OpenCV-Python] OpenCV 中的图像处理 部分 IV (六)

    部分 IVOpenCV 中的图像处理 OpenCV-Python 中文教程(搬运)目录 23 图像变换 23.1 傅里叶变换目标本小节我们将要学习: • 使用 OpenCV 对图像进行傅里叶变换 • ...

  9. 短网址服务(TinyURL)生成算法

          前不久做了一个优惠劵的分享功能,其中一个功能就是生成一个优惠劵分享短链接.生成的短链接要求每个链接都是唯一的,并且长度尽可能短.在网上查了一下相关的思路,发现了一个不错的算法.这个算法的思 ...

  10. web扫描工具-Nikto介绍与使用

    Nikto Perl语言开发的开源Web安全扫描器 web扫描模式:截断代理主动扫描 可以扫描的方面:软件版本搜索存在安全隐患的文件服务器配置漏洞WEB Application层面的安全隐患避免404 ...