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. Bootstrap表格中,thead固定,tbody有垂直滚动条

    1.html源码:这里的table是使用的vue写法,实际生成的表格和一个一个写的tr th td无异 <div class="panel-body no-padding"& ...

  2. Javascript面向对象基础(二)

    一: 用定义函数的方式定义类在面向对象的思想中,最核心的概念之一就是类.一个类表示了具有相似性质的一类事物的抽象,通过实例化一个类,可以获得属于该类的一个实例,即对象.在JavaScript中定义一个 ...

  3. Spring Boot学习笔记---Spring Boot 基础及使用idea搭建项目

    最近一段时间一直在学习Spring Boot,刚进的一家公司也正好有用到这个技术.虽然一直在学习,但是还没有好好的总结,今天周末先简单总结一下基础知识,等有时间再慢慢学习总结吧. Spring Boo ...

  4. 使用gunicorn将django项目部署到生产环境的子目录下,在nginx后端获取客户真实IP地址

    生产环境有时,并不是为了一个项目而存在的.毕竟,域名是比较稀有的. 今天遇到这个问题,解决了.作个记录. 并且,如果将django项目部署在Nginx后面,那如何获取用户真实的IP地址呢? 下面就来解 ...

  5. jQuery插件实践之轮播练习(一)

    所有文章搬运自我的个人主页:sheilasun.me 因为从来没写过jQuery插件,所以本文要通过一个轮播的例子,练习jQuery插件的写法. 新建插件文件 在讨论细节之前,先新建插件文件(当然也可 ...

  6. zjoi 2017 树状数组

    题解: 感觉相比仙人掌简单了很多啊.. 首先会发现那个其实就是后缀和 然后其实就是判断一下两个位置的元素想不想等 然后l=1是要特判的 之后一个易错的地方就是去维护每个数是0/1的概率 因为这样概率是 ...

  7. expect自动化工具

    http://blog.csdn.net/wangtaoking1/article/details/78268574 http://blog.csdn.net/genggood/article/det ...

  8. Python 时间获取

    摘自:http://www.jb51.net/article/91365.htm 摘自:https://www.cnblogs.com/liuq/p/6211005.html 一.在python中,除 ...

  9. 在Ubuntu中成功搭建KMS服务器

    介绍 基于vlmcsd搭建的KMS服务器. 根据github上的说明,这个工具是用C写的,没有任何依赖,可以直接运行.而且它横跨几乎现在所有的系统平台,如Android, FreeBSD, Solar ...

  10. poj 2253 Frogger (最小最大路段)【dijkstra】

    <题目链接> 题目大意: 给出青蛙A,B和若干石头的坐标,现青蛙A想到青蛙B那,A可通过任意石头到达B,问从A到B多条路径中最小的最长边. 解题分析: 这是最短路的一类典型题目,与普通的最 ...