下面是创建签署CAB文件的步骤 :

1 获得一个软件出版商证明书
2 创建 CAB 文件
3 签署 CAB 文件
4 将签署过的 CAB文件嵌入一个Web页

一 、获得一个软件出版商证明书

在签署文件之前,您需要有一个软件出版商证明书(SPC)。为此,您必须向证书发放机构(Certification Authority)提出申请。在申请过程中,您必须生成一个密匙对,并向证书发放机构提供证明信息。有关如何得到软件出版商证明书更详尽的信息,请参考Signing Code with Microsoft's Authenticode。

证书发放机构生成一个符合工业标准X.509证书格式(包含版本3扩展)的软件出版商证明书 。该证书确定并且包含您的公共密匙,并以证书发放机构存档作为参考,把一个拷贝以电子邮件的方式返回给您。收到该证书之后,您应该在所有要发布的、用私人密匙签署的软件当中,包含一份该证书的拷贝。

获得一个软件出版商证明书
我们可以下载微软的SDK开发包,在bin目录下的 MAKECERT和 CERT2SPC 公用程序,生成一个测试软件出版商证明书。注意,该测试软件出版商证明书对真正的软件发布无效,但是能够被用来测试您代码的签署。

比如,要做一个私人密匙文件MYKEY.PVK 和一个公司证书COMPANY.CER,则运行公用程序MAKECERT,其命令如下:

makecert -r -sv "MYKEY.PVK" -n "CN=YourSoftwareCompany" -b 01/01/2005 -e 01/01/2036 -eku 1.3.6.1.5.5.7.3.1 -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 COMPANY.CER

MyKey 是您的密匙名,YourSoftwareCompany 是您的公司名。注意公用程序 MAKECERT 在命令行选项中区分大小写,因此您必须使用小写的-u、-n以及-k;-n选项的值必须是大写的CN=。

做一个名为CERT.SPC测试软件出版商证明书,则运行公用程序CERT2SPC,命令如下:

C:/CAB&SIGN/CERT2SPC COMPANY.CER CERT.SPC

注意CERT.SPC文件是利用您刚使用MAKECERT创建的CERT.CER文件文件创建的 。

二 、创建一个 CAB文件

这一部分描述如何创建能在互连网上分派ATL和MFC组件的CAB文件。如果您要了解有关CAB文件的更多信息,请参考微软软件开发工具包(Platform SDK)中的说明,可在http://www.microsoft.com/workshop/prog/cab下载到最新cabinet包:

创建一个 CAB文件首先需要一个INF文件: INF文件是一个文本文件,指定运行控件所需要下载或者呈交的文件(比如DLL或者其它OCX)。一个INF文件就捆绑了CAB压缩文件所有的必须文件。 缺省情况下,与现有硬盘中文件版本号相同的文件不被下载。要了解有关INF文件及其选项(包括如何创建独立于平台的INF文件)的详细情况,请参考MSDN中的相关文档。

创建一个INF文件,以下是一个INF文件的例子:
; Sample INF file for TEST.DLL
[version]
; version signature (same for both NT and Win95) do not remove and change
signature="$CHICAGO$"
AdvancedINF=2.0

; file in cab
[Add.Code]
test.dll=test.dll
atl.dll=atl.dll

; needed DLL
[atl.dll]
file-win32-x86=thiscab
FileVersion=2,00,0,7024
DestDir=11
RegisterServer=yes

[test.dll]
file-win32-x86=thiscab
clsid={4CBBC676-507F-11D0-B98B-000000001234}
FileVersion=1,0,0,1
RegisterServer=yes
; end of INF file

该INF指定了系统需要安装特定版本的ATL.DLL。如果系统中还没有该文件,则需要从和该INF一起创建的CAB文件下载。

"file-win32-x86" 指定平台是 x86。
"thiscab" 是一个关键字,意指包含该INF的CAB文件。您也可以从网上下载所需要的DLL文件,只要指定一个HTTP 网址即可,绝对路径或者相对路径都可以,比如:
file-win32-x86=http://www.yoursite.com/yourdir/NEEDED.DLL
"FileVersion" 指该dll文件的版本。得到一个文件的版本号的过程是:在Windows OS中右键点击该文件;从弹出列表中选择Properties,然后在接着弹出的对话框中选择版本标签。
"DestDir" 指的是装载目录或者文件的地址: 11 指定为系统目录 WINDOWS/SYSTEM 或者 WINNT/SYSTEM32; 10 规定为窗口目录、WINDOWS或者WINNT。如果没有指定DestDir(典型情况),则代码从固定的OCCACHE目录装载。
"clsid" 指的是要安装控件的CLSID,用于系统注册,所以值应唯一,可用VC自带工具生成。

注意:add.code中加载的文件要和下面的dll文件顺序相反,另外文件名应保持一致(保证不会出错)

在包含您的源文件(INF、DLL文件)的目录下面运行CABARC。

CABARC -s 6144 n TEST.CAB atl.dll test.dll test.inf

-s选项为代码签署保留空间。n 命令指定您想创建的是CAB文件。CABARC 命令和选项的说明可以查看随包文档

三 、签署一个CAB文件

使用Code Signing Wizard签署一个CAB文件:

1. 运行公用程序 SIGNCODE。
2. 在Code Signing Wizard对话框当中,点击Next前进到下一页。
3. 选择您想签署的CAB文件。
4. 键入您想在证书中使用的名字。
5. 点击Next,前进到下一页。
6. 选择刚才生成的软件开发商证书(SPC)。
7. 键入私人密匙(PVK)。
8. Next前进,没有特殊要求,默认就可以,直至签署CAB 文件。

您可以不使用CAB文件直接签署您的DLL和OCX 。CAB文件的好处在于它是压缩的,而且,如果和INF文件一起使用,可以将所有必要代码捆绑在一起。

四 、将签署过的 CAB文件嵌入一个Web页

ATL和MFC控件使用标签嵌入网页。在标签,您需要为该控件指定三个属性 :
ID - 控件名称
CLASSID - 控件的CLSID
CODEBASE - 下载控件的位置。CODEBASE 可以指向许多不同的文件类型。 web页中的代码如下:

<OBJECT CLASSID="clsid:4CBBC676-507F-11D0-B98B-000000001234" id="test" codebase="http://www.yoursite.com/yourdir/test.cab#version=1,0,0,1" width = 0 height = 0 VIEWASTEXT ></OBJECT>

如果您在CAB文件中包含了选项版本号,它应该指向要下载的控件。例如,如果TEST.DLL有一个版本号1,0,1,1,则CAB文件的版本号也必须是1,0,1,1:

codebase="http://www.yoursite.com/yourdir/test.cab#version=1,0,1,1"
如果您没有包含选项版本号,旧版本将不会被替换。

如何创建并签署CAB文件相关推荐

  1. 使用MakeCAB.exe命令创建CAB文件

    MakeCAB.exe 是 Windows 2000 或更高版本中随附的工具.要使用 MakeCAB.exe 来创建 .cab 文件,请执行以下步骤: 为 makecab.exe 创建一个定向文件,然 ...

  2. 如何创建 CAB 文件和如何从文件、内存和资源中解压缩 CAB 文件

    制作 MSI 安装程序少不了 CAB 文件,CAB 文件可以对需要安装程序进行压缩,以达到快速分发新程序的目的,通过参考高人的代码和 MSDN 整理了一套 Cabinet 文件的操作实现类,使用这些类 ...

  3. 为ActiveX控件创建Cab文件

    为ActiveX空间添加Cab文件 目的: 1.  依赖MFC库或ATL库等开发的ActiveX控件要正常的运行必须依赖这些库.但是你不能保证你用户的机器上装有与你开发环境相同的库,所以,当你发行一个 ...

  4. 将ocx和DLL文件打包成cab文件,inf的编写

    From: http://icrwen.iteye.com/blog/1118766 http://blog.csdn.net/yimiyangguang1314/article/details/65 ...

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

    我们打开淘宝等网站时,IE浏览器会提示安装空间,这个控件便是用于对用户名密码进行加密的ActiveX控件.如何在我们的站点上安装如此控件,让用户可以通过简单的点击便可方便使用我们的空间呢? 下面是如何 ...

  6. cab文件打包的ActiveX控件

    程序环境:Windows Xp SP2, IE 6, Tomcat 6.0, VC++6.0javascript 利用MFC开发的ActiveX控件要正常运行必须依赖MFC库.可是你不能保证你用户的机 ...

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

    这两天做控件的web发布遇到了几个问题,现总结如下. 一.程序描述: 程序环境:windows Xp sp2, ie 6, tomcat 5.5, vc++6.0 程序过程:控件做成ocx文件,用于客 ...

  8. 用keytool创建Keystore和Trustsotre文件

    http://zjumty.iteye.com/blog/1885356 注: keytool在OS X中经常显示为乱码,它在中文OS X中输出GB2312编码,所以要将terminal的默认编码更改 ...

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

    我们打开淘宝等网站时,IE浏览器会提示安装空间,这个控件便是用于对用户名密码进行加密的ActiveX控件.如何在我们的站点上安装如此控件,让用户可以通过简单的点击便可方便使用我们的空间呢? 下面是如何 ...

最新文章

  1. docker :open /var/lib/docker/tmp/GetImageBlob318829910: no such file or directory异常解决
  2. SQL函数设计——临时表的使用
  3. log4j配置不生效
  4. 网页模板制作只为满足用户需求!
  5. urllib的实现---cookie处理
  6. split函数python 未定义_Python字符串方法split()中的一道坑
  7. Qracle学习:字符串相关函数
  8. etl数据抽取工具_数据同步工具ETL、ELT傻傻分不清楚?3分钟看懂两者区别
  9. LeetCode 1620. 网络信号最好的坐标
  10. mysql使用文件排序_Mysql排序FileSort的问题
  11. python之__repr__
  12. 软件基本功:没有人比我更重视测试
  13. 线性反馈移位寄存器(Linear Feedback Shift Register, LFSR)
  14. 计算机数学基础试卷及答案,2012计算机数学基础试题及答案.pdf
  15. 阿里云Centos7 docker-compose + filerun + aria2 + AriaNg配置离线下载器
  16. BioGRID:蛋白质相互作用数据库
  17. Could not get a resource since the pool is exhausted
  18. WinPE的制作 - 进WinPE后自动运行程序
  19. python--我的大花莽【turtle画】
  20. 群晖 Drive 的团队文件夹显示 “无法取得“

热门文章

  1. QNX Neutrino RTOS简介
  2. 写给所有默默支持我们这些IT人的另一半------携手看夕阳
  3. axios get带参数的请求方法
  4. Linux_rpm安装
  5. 信号处理琐碎知识点 — OFDM 正交频分复用
  6. APP第一次走引导页面的方法
  7. 如何命名计算机快捷键,重命名的快捷键,教您重命名的快捷键是什么
  8. 《机动车交通事故责任强制保险费率浮动暂行办法》媒体见面会实录
  9. U盘被识别为其他设备(显示U盘图标但是不显示盘符)的解决办法
  10. Matlab声音处理教程