当前位置:首页 > 开发 > Web前端 > 前端 > 正文

OCX打成CBA包并实现自动安装与自动升级

发表于: 2013-07-16   作者:alxw4616   来源:转载   浏览:
摘要: 近来手上有个项目,需要使用ocx控件 (ocx是什么? http://baike.baidu.com/view/393671.htm) 在生产过程中我遇到了如下问题. 1. 如何让 ocx 自动安装?     a) 如何签名?     b) 如何打包?     c) 如何安装到指定目录? 2.
近来手上有个项目,需要使用ocx控件
(ocx是什么? http://baike.baidu.com/view/393671.htm)
在生产过程中我遇到了如下问题.
1. 如何让 ocx 自动安装?
    a) 如何签名?
    b) 如何打包?
    c) 如何安装到指定目录?
2. 如何让 ocx 自动升级?

下面是我解决这些问题的方法.(该项目已发布,所有代码都可正常运行.)

一、ocx 签名
  购买及使用:
  http://verisign.itrus.com.cn/html/fuwuyuzhichi/changyongwendang/411.html
  非购买的我没有发一现个可用的 -_-
  注:OCX与 CAB包都要签名

二、 打包成CAB包
这里我尝试了二个方法
    a)    Cabarc (该方法在我把系统升级为 win7 64后出错,原因没能找到.)
        运行 >  CMD
        cd C:\CAB
        cabarc n ocx.cab -s 6144 -m LZX:21 ocx.ocx 1.dll 2.dll 1.lang ocx.inf

        n ocx.cab 新生成 ocx.cab 包
        -s 6144 Reserve space in cabinet for signing (e.g. -s 6144 reserves 6K bytes)
        -m LZX:21压缩模式 最高压缩 Set compression type [LZX:<15..21>|MSZIP|NONE], (default is MSZIP)
        ocx.ocx 1.dll 2.dll 1.lang ocx.inf 是当前目录下 你要找进CBA包的 文件
    b)    MakeCAB (上个方法被废了后改用该方法,感觉比上个方法好用)
        运行 >  CMD
        cd C:\CAB
        MakeCAB /F list.txt /d compressiontype=lzx /d compressionmemory=21 /d cabinetnametemplate= ocx.cab

        /F list.txt 将要打包的文件目录内容如下
            ocx.ocx
            1.dll
            2.dll
            1.lang
            ocx.inf
        /d compressiontype=lzx /d compressionmemory=21压缩模式 最高压缩
        /d cabinetnametemplate= ocx.cab 打包后的文件名 我在当前目录 disk1 下打到了该文件

三、    安装(ocx.inf)
    ocx.inf 决定了,你文件的版本 安装目录等许多重要信息
    关于inf文件细节 大家可以看下
   [url] http://wenku.baidu.com/view/c136df4633687e21af45a97f.html[/url]
    下面给出一个简单的实例

    [version]  
    signature="$CHICAGO$" 
    AdvancedINF=1,0,0,4
     
    [DefaultInstall]
    CopyFiles=install.files
    RegisterOCXs=RegisterFiles

    [RInstallApplicationFiles]
    DelFiles=install.files
    CopyFiles=install.files
    RegisterOCXs=RegisterFiles

    [DestinationDirs]
    install.files=30,Program Files\XOCX

    [SourceDisksNames]
    1=%DiskName%,ocx.cab,1

    [install.files]
    ocx.ocx 1.dll 2.dll 1.lang
    [ocx.ocx]
    file-win32-x86=thiscab   
    RegisterServer=yes   
    clsid={917179C9-F725-4484-BADD-6D19A3DE5D82}
    FileVersion=1,0,0,3
    DestDir=30,Program Files\XOCX

    [1.dll]
    RegisterServer=yes       
    DestDir=30,Program Files\XOCX

    [2.dll]
    RegisterServer=yes       
    DestDir=30,Program Files\XOCX

    [1.lang]
    RegisterServer=yes       
    DestDir=30,Program Files\XOCX

    [RegisterFiles]
    %30%\Program Files\XOCX\ocx.ocx

四、    自动安装与自动升级

<object name="ocx" id="ocx" classid="clsid:917179C9-F725-4484-BADD-6D19A3DE5D82" style="width:100%; height: 100%; " codebase="ocx.cab#version=1,0,0,3"></object>

codebase 指明要从那里下载 该ocx.
#version=1,0,0,3 当前页面使用ocx的版本,如果与 ocx.inf中 [ocx.ocx] FileVersion=1,0,0,3一致. 不一致会要求用户重复安装.

当ocx升级后应该
修改基本版本
修改 ocx.inf中 [ocx.ocx] FileVersion=1,0,0,3 中的值
修改 <object> 中的值
这样当用户再次该页面时会自动安装最新版本的ocx控件

OCX打成CBA包并实现自动安装与自动升级

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
如果是windows系统下,需要事先安装Cygwin( http://www.cygwin.com/ ): 1.选择android工程,右键
由于Android项目开源所致,市面上出现了N多安卓软件市场。为了让我们开发的软件有更多的用户使用,
这是本人第一次写比较复杂的文章,表达不清之处,请各位见谅。好,闲话少说,入正题。 最近单位开发
应用程序的自动升级是一个很重要的功能。原理其实很简单,但实现起来却很有难度,尤其是找到一个持
我们看到很多Android应用都具有自动更新功能,用户一键就可以完成软件的升级更新。得益于Android系统
这是本人第一次写比较复杂的文章,表达不清之处,请各位见谅。好,闲话少说,入正题。 最近单位开发
我们看到很多Android应用都具有自动更新功能,用户一键就可以完成软件的升级更新。得益于Android系
推荐安卓开发神器(里面有各种UI特效和android代码库实例) 我们看到很多Android应用都具有自动更新
在WinForm应用程序中实现自动升级 最近单位开发一个项目,其中需要用到自动升级功能。因为自动升级
  (最新OAUS版本请参见:自动升级系统OAUS的设计与实现(续))   对于PC桌面应用程序而言,自
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号