`
kiki1120
  • 浏览: 314573 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

如何制作cab包(解决不能注册的问题)

阅读更多

    在上一篇文章中,讲述了如何制作客户端Activex插件的cab包,但是在使用过程中发现有的浏览器不能注册成功,手动注册也不行,提示缺少动态链接库的问题,导致不能正常使用。后来重新编译ocx,将其他dll补充进来一起打包,但仍然不能注册成功。

 

    于是将所有文件复制到system32文件夹下,手动进行注册,结果注册失败。原来是inf中的写法将system32作为目的文件夹,而该文件夹却不允许这样操作。至于原因,目前还不清楚,网上搜索到的例子也都是使用system32,可能我的ocx比较特殊吧,那就使用system32下新建的一个目录吧,这次手动注册可以成功。

 

    重新打包、测试,有点崩溃了,为什么还是注册不了。现象是浏览器提示是否安装,点击安装后无反应,刷新页面还是提示是否安装。后来查看支付宝的支付控件中的inf文件,按照其格式重新制作inf文件,再次测试,成功!

 

如何制作cab

制作SSL VPN客户端插件cab包有两种方法,一种是手动打包,另一种是利用Ant自动打包,下面分别对两种方法进行说明,你可以根据熟练程度自由选择。

一、手动打包

准备工作

l  用到的工具

打包工具iexpress.exe

签名工具signcode.exe

代码签名证书

l  打包文件

WVC.ocx

LiteUnzip.dll

mfc80u.dll

mfcm80u.dll

msvcm80.dll

msvcp80.dll

msvcr80.dll

Microsoft.VC80.CRT.manifest

Microsoft.VC80.MFC.manifest

       在制作cab包之前,需要准备以上的打包、签名工具和文件,将iexpress.exesigncode.exe复制到Java环境变量的bin目录下。打包文件全部存放在独立的一个文件夹下。

制作步骤

步骤1 准备inf文件

将以下代码另存为wvc.inf,存放于打包文件目录下。文件内容一般情况下不需要改变,除非cab需要增加或减少文件的情况下,再修改此文件。

 

 

[version]
signature="$CHICAGO$"
AdvancedINF=2.0

[DefaultInstall]
CopyFiles=files
RegisterOCXs=RegisterFiles

[DefaultUninstall]
cleanup=1
Delfiles=files
UnRegisterOCXs=RegisterFiles

[SourceDisksNames]
1 = %DiskName%,"wvc.cab",1

[SourceDisksFiles]
WVC.ocx=1
LiteUnzip.dll=1
mfc80u.dll=1
mfcm80u.dll=1
msvcm80.dll=1
msvcp80.dll=1
msvcr80.dll=1
Microsoft.VC80.CRT.manifest=1
Microsoft.VC80.MFC.manifest=1
westone.cer=1

[RegisterFiles]
%11%\sslvpn\WVC.ocx

[DestinationDirs]
files=11, sslvpn

[files]
WVC.ocx=WVC.ocx
LiteUnzip.dll=LiteUnzip.dll
mfc80u.dll=mfc80u.dll
mfcm80u.dll=mfcm80u.dll
msvcm80.dll=msvcm80.dll
msvcp80.dll=msvcp80.dll
msvcr80.dll=msvcr80.dll
Microsoft.VC80.CRT.manifest
Microsoft.VC80.MFC.manifest
westone.cer=westone.cer
   
[WVC.ocx]
file-win32-x86=thiscab
clsid={C8E6EFFA-ED02-4858-836A-B164102F3C5D}
RegisterServer=yes
FileVersion=1,0,0,1
   
[LiteUnzip.dll]
file-win32-x86=thiscab
FileVersion=0,0,0,2

[mfc80u.dll]
file-win32-x86=thiscab
FileVersion=8,0,50727,42

[mfcm80u.dll]
file-win32-x86=thiscab
FileVersion=8,0,50727,42

[msvcm80.dll]
file-win32-x86=thiscab
FileVersion=8,0,50727,42

[msvcp80.dll]
file-win32-x86=thiscab
FileVersion=8,0,50727,42

[msvcr80.dll]
file-win32-x86=thiscab
FileVersion=8,0,50727,42

[westone.cer]
file-win32-x86=thiscab

[Strings]
DiskName = "sslvpn"

 

 

注释:

²  "thiscab" 是一个关键字,意指包含该INFCAB文件。也可以从网上下载所需要的DLL文件,只要指定一个HTTP 网址即可,如:

²  关键字"file-win32-x86" 指定平台是 x86

²  文件版本号可见属性。

²  "DestDir"指的是装载目录或者文件的地址: 11 指定为系统目录 WINDOWS/ /SYSTEM32;

²  "clsid" 指的是要安装控件的CLSID

步骤2 签名ocx文件

运行signcode.exe

1)      选择要签名的ocx文件,由于dll不需要注册到系统,所以不必签名。

2)      选择代码签名证书公钥。

3)      选择代码签名证书私钥。

4)      其他选项均为默认设置,输入证书私钥口令,输入时间戳,再一次输入私钥口令。

步骤3 制作CAB

运行iexpress.exe

1)      选择“Create new Self Extraction Directive file”,点击下一步。

2)      选择“Create compressed files only(ActiveX Installs)”,点击下一步。

3)      点击Add,选择所有文件包括inf,点击下一步。

4)      点击Browse,输入.CAB文件的存放地址(包含所取文件名),并且要选中 Store files using Long File Name inside Package”。点击下一步。

5)      选择“Dont save”,一直点击下一步,直到完成。

步骤4 签名CAB

 

同步骤2,选择刚刚生成的cab包进行签名,注意签名后复制到webapp/download目录时需要更名为wvc.cab

 

步骤5 删除ocx插件

如果想删除已安装的插件,重新注册,那么进入安装目录c:\windows\downloaded program files,选中WVC删除即可。

二、自动打包

准备工作

l  用到的工具

打包工具cabarc.exe

签名工具signcode.exe

l  打包文件

WVC.ocx

LiteUnzip.dll

mfc80u.dll

mfcm80u.dll

msvcm80.dll

msvcp80.dll

msvcr80.dll

Microsoft.VC80.CRT.manifest

Microsoft.VC80.MFC.manifest

在制作cab包之前,需要准备以上的打包、签名工具和文件,将cabarc.exesigncode.exe复制到Java环境变量的bin目录下。打包文件全部存放在webapp/download/wvc文件夹下。更新build.xml文件。

制作步骤

步骤1 准备inf文件

参照手动打包步骤。

步骤2 修改本地时间

 

由于代码签名证书已经过期,所以需要将本地时间修改成证书还没有过期的时间,否则签名失败。如果拥有未过期的代码签名证书,此步骤可以忽略。

步骤3 执行build.xml的activex任务

Eclipse中打开build.xml文件,执行activex任务。该任务会自动签名wvc.ocx文件,生成wvc.cab并签名。

分享到:
评论
1 楼 yangge3232 2014-04-25  
你好,我的cab  chktrust  能运行,就是放在服务器上无法安装和下

相关推荐

    VS2008(c#)开发ActiveX控件、访问及制作CAB包总结

    在本文中,我们将深入探讨如何使用Visual Studio ...通过以上步骤,你可以成功地开发一个C#编写的ActiveX控件,制作CAB包,并在网页中使用。在开发过程中,要注意控件的安全性、兼容性和易用性,以确保最佳用户体验。

    CAB打包及注册操作手册

    当遇到注册问题时,可以通过查看系统日志、使用调试工具或分析注册表来诊断并解决问题。 总之,《CAB打包及注册操作手册》是一份全面的指南,涵盖了从创建CAB文件到注册组件的全过程。通过学习这份手册,开发者和...

    Windows CE 手写输入法及Windows CE制作CAB包

    使用Windows CE制作CAB包的工具,如`HandByTmcCab`,可以帮助开发者打包他们的应用程序及其依赖,形成一个可以轻松部署到目标设备上的单一文件。 在提供的文件列表中,我们看到`tmcinput.sln`,这是一个Visual ...

    vlc+html 免注册(生成axvlc.cab包)

    "生成axvlc.cab包"是解决这个问题的一种方法。`axvlc.cab`是一种包含ActiveX控件的 Cabinet 文件,ActiveX是微软开发的一种技术,允许网页通过控件与用户交互,比如播放视频。当用户访问含有VLC播放器的网页时,如果...

    win10下OCX控件打CAB包web页面使用教程(亲测可用)

    OCX控件不能直接在Web页面上使用,需要被打包成CAB文件。CAB文件是一种压缩格式,用于包含控件和其他必需的文件,如INF配置文件。使用Microsoft的MakeCab工具或者第三方工具如WiX,将OCX控件、注册脚本(例如,REG...

    C#web 开发ActiveX控件、生成MSI与制作CAB文件,更新msi

    然后,为了在Web环境中使用,需要生成CAB( Cabinet)文件,CAB文件包含了控件的DLL以及必要的注册信息。同时,如果你需要更新控件,也需要生成MSI(Microsoft Installer)安装包,以便用户能够方便地安装和升级。 ...

    WinCE_CABManager3.0绿色免安装版(修正文件删除错误)

    这款软件的绿色免安装版本不仅方便快捷,而且经过修正,解决了文件删除错误的问题,为用户提供了更加稳定可靠的使用体验。 CAB,全称 Cabinet,是微软开发的一种文件压缩格式,主要用于Windows系统中的软件安装包。...

    ActiveX打包成cab文件详细教程,带截图

    为了解决这个问题,开发者可以将ActiveX控件打包成 CAB( Cabinet)文件,这样用户只需下载一个包含了所有必要文件的压缩包,即可自动安装和注册控件。 CAB文件打包过程包括以下几个关键步骤: 1. **证书创建**: ...

    wince cab安装包专用绿化工具CAB_Manager

    CAB_Manager 是这个绿化工具的名称,它的主要功能是解决 CAB 安装包在 Windows CE 上无法正常安装的问题。 **描述详解:** 描述提到,“wince下载cab安装后不能安装的,用此软件将cab安装包绿化后即可运行”。这...

    ActiveX控件打包成Cab置于网页中自动下载安装

    4. 浏览器兼容性:由于非IE浏览器不支持ActiveX,因此需在代码中检测用户浏览器类型,针对不同浏览器提供相应的解决方案。 五、安全和风险 尽管CAB文件和ActiveX控件提供了便捷的部署方式,但也存在安全隐患。恶意...

    CAPICOM.CAB

    总的来说,CAPICOM.CAB是解决IE浏览器数字证书问题的关键组件,通过提供一套全面的加密工具,增强了浏览器的安全性能,特别是对于那些需要高安全性的网上交易和通信场景。用户在遇到与数字证书相关的错误时,可以...

    Web 发布 cab文件 打包ActiveX控件总结

    本文主要探讨如何将ActiveX控件打包成cab文件并在网页中正确调用,以及解决过程中可能遇到的问题。 一、程序流程 1. 首先,开发者需要创建一个OCX文件,这是一个ActiveX控件,用于客户端执行任务,可能需要依赖...

    CAB安装器绿色版

    总的来说,CAB安装器绿色版是针对Windows CE设备的一个实用工具,它解决了这类设备无法直接处理CAB安装包的问题。通过简单的操作,用户可以更方便地在导航仪等设备上安装和管理软件,提高了设备的可用性和功能性。...

    C#开发activeX空间以及CAB打包

    ### C# 开发 ActiveX 控件及 CAB 打包详解 #### 一、概述 ActiveX 控件是一种可重用的软件组件,主要用于扩展浏览器功能或实现其他应用程序的交互式功能。通过使用 C# 和 Visual Studio,我们可以创建高度定制化的...

    将ocx和DLL文件打包成cab文件,实现IE浏览器在线安装

    6. **处理兼容性问题**:由于不同浏览器对ActiveX的支持程度不一,可能需要针对不同的浏览器和平台提供不同的解决方案,例如使用`<object>`标签的备用内容或使用JavaScript进行检测和引导。 通过以上步骤,我们可以...

Global site tag (gtag.js) - Google Analytics