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 全栈开发,Day5(字典,增删改查,其他操作方法)

    一.字典 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.存储大量的数据,是关系型数据,查询数据快. 列表是从头遍历到尾字典使用二分查找 二分查找也称折半查找(Bi ...

  2. 用两个int值实现读写锁

    private int readcount = 0; private int writecount = 0; public void lockread() throws InterruptedExce ...

  3. MyBatis之Hello world(Mybatis入门)

    MyBatis中文网,超详细的:http://www.mybatis.org/mybatis-3/zh/index.html MyBatis英文网:http://www.mybatis.org/myb ...

  4. POJ 2976 3111(二分-最大化平均值)

    POJ 2976 题意 给n组数据ai,bi,定义累计平均值为: 现给出一个整数k,要求从这n个数中去掉k个数后,最大累计平均值能有多大?(四舍五入到整数) 思路 取n−k个数,使得累计平均值最大. ...

  5. BZOJ5045 打砖块 2017年9月月赛 其他

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ5045 题意概括 有一堵墙. 现在挖掉某些砖.如果有相邻的某两个砖没有了,那么他们中上方的那块也没了 ...

  6. django基类View.as_view()

    参考:https://www.zmrenwu.com/post/53/ 详细见参考 一般请求的判断方法: def view(request, *args, **kwargs): if request. ...

  7. Hash值破解工具(findmyhash与hash-identifier破解Hash值)

    Hash值破解工具(findmyhash与hash-identifier破解Hash值) 前言: Kali Linux提供各种哈希密文破解工具,如hashcat.john.rainbows.不论哪一种 ...

  8. JavaNIO快速入门

    NIO是Jdk中非常重要的一个组成部分,基于它的Netty开源框架可以很方便的开发高性能.高可靠性的网络服务器和客户端程序.本文将就其核心基础类型Channel, Buffer, Selector进行 ...

  9. 进程队列补充-创建进程队列的另一个类JoinableQueue

    JoinableQueue同样通过multiprocessing使用. 创建队列的另外一个类: JoinableQueue([maxsize]):这就像是一个Queue对象,但队列允许项目的使用者通知 ...

  10. 安卓,网页控件,显示网页 Android, web controls, display web pages

    安卓,网页控件,显示网页Android, web controls, display web pages 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq ...