葡京网投哪个正规 > 联系我们 > 从网页上下载控件时制作CAB包的方法,OCX控件下载并自动更新

原标题:从网页上下载控件时制作CAB包的方法,OCX控件下载并自动更新

浏览次数:68 时间:2020-03-25

一、程序描述:
程序环境:windows Xp sp2, ie 6, tomcat 5.5, vc++6.0

   Internet 软件分发单位是“软件包”,它由包含 .inf 文件或软件分发 (.osd) 文件(或两者都包括)的 CAB 文件 (.cab) 所组成。一个分发单位也可以包含软件组件,如 ActiveX 控件 (.ocx)、.dll 文件、.exe 文件、Java 类文件或小程序。当 Web 页上 OBJECT 元素的 CODEBASE 特性引用包含.inf 文件的 CAB 文件时,Internet Explorer 3.0 和更新的版本将自动把 CAB 文件作为软件分发单位。 
第一步:创建一个inf文件: 
INF文件是一个文本文件,指定运行控件所需要下载或者呈交的文件(比如DLL或者其它OCX)。 
一个INF文件就捆绑了CAB压缩文件所有的必须文件。 缺省情况下, 
与现有硬盘中文件版本号相同的文件不被下载。 
要了解有关INF文件及其选项(包括如何创建独立于平台的INF文件)的详细情况, 
请参考平台软件开发工具包(Platform SDK,)的设置和系统管理服务(Setup and System Management Services) 
部分的Setup APIOverviewINF Files目录下的内容。 
下面就以我自己写的一个videoweb.dll为例子。在videoweb.dll中使用到:tdiio.dll,encoder.dll,decoder.dll,tdiio.ini,user.ini, 
camer.ini,drivo.ini. 
video.inf的例子: 
;inf file for videoweb.dll 
[version] 
signature=$CHICAGO$ 

将控件打包成CAB加数字签名方法实现控件自动更新

[背景]
做过ActiveX控件的朋友都知道,要想把自己做的ActiveX控件功能放在自己的网页上使用,那么用户在客户端就必须进行本地的注册,也就是说用户得首先要把该ActiveX控件(test.ocx)放在本机的%system%/system32下,然后运行DOS工具里面运行regsvr32 test.ocx命令进行注册。但如果真是这么去做的话,那么代表着你处于危险之中了,因为您是通过让用户自己去部署设置环境来达到你的目的,这就失去软件项目本身所存在的价值。那么面对这种情况,我们应该如何解决呢?聪明的你一定会很快就想到,我们可以使用户在客户端自动下载安装该ActiveX控件,这样一来即可以实现我们所想要的功能,又不需要用户自己去部署设置环境,这岂不是一举两得。
[必备条件]
一、用于将ActiveX控件进行打包并加数据鉴名的工具集:
makecert.exe 制作cer格式的证书,即X.509证书,同时可以创建私钥和公钥。
cert2spc.exe 将cer格式证书转换成spc格式证书,即PKCS #7证书。
cabarc.exe 将ocx打包成cab。
signcode.exe 将证书签署到ocx上去。
chktrust.exe 检查签署证书后的ocx是否正确。
certmgr.exe 是管理证书用的。
二、用于进行打包用的ocx控件evS1300.ocx。
三、用于查看ocx控件的工具ActvxDoc。
[制作过程]
一、环境设置
1、下载makeCAB包,解压到本地目录(如E盘根目录),如查看到如图1所示的工具集,则表示已下载成功:
葡京正网网投 1

程序过程:控件做成ocx文件,用于客户端调用本地硬件,其中有用到第三方几个.dll文件。采用windows自带iexpress.exe 打包成cab文件,在服务器端jsp页面进行控件调用,下载cab文件并自动注册。

[DestinationDirs] 
DLLSysCopy=11 
IniWinCopy=25 

1、所需工具

2、设置系统环境变量,右键单击“我的电脑”à选择“属性”à选择“高级”选项卡,打开如图2所示的系统属性面版块:

二、程序问题:
遇到问题:
1.       cab文件无法下载,而且根本不加提示。
2.       下载好的cab文件在system32中能够看到,但是页面仍然不能显示,一把红叉,并且无法使用。

[DefaultInstall] 
CopyFiles=DllSysCopy,IniWinCopy 
AddReg=videoReg 

==============

葡京正网网投 2

问题测试:
1.       浏览器页面根本没有下载提示,考虑应该是cab的路径问题,也曾考虑是ie浏览器的安全问题。将安全降到最低测试。反复更改cab路径。
2.       这个问题最郁闷,搞了很久。考虑首先是安全问题,然后在网上搜索之后说是sp2调高了安全策略,有说降低安全,有说需要对程序进行数字签名。

[DllSysCopy] 
tdiio.dll 
Decoder.dll 
VideoWeb.dll 

cabarc.exe ———用于将ocx及所需dll文件打包成cab文件

3、在系统属性版块里单击“环境变量(N)”按钮,打开图3:

问题解决:
1.       确实是路径不对,与安全无关。当在jsp中代码为:
<OBJECT id=pos codebase="TestCAB.CAB#version=1,0,0,1" height=100 classid="CLSID:719A1D6E-7099-4123-9D63-F0118AFF2D61" VIEWASTEXT></OBJECT>
TestCAB.CAB文件应该放置在tomcat5.5安装目录Tomcat 5.5webapps下该调用jsp所在的工程下。
2.       不需要更改安全级别,而应该在Internet选项-〉安全-〉受信任的站点-〉站点 中添加服务器地址。注意:不要选复选框“对该区域中的所有站点要求服务器验证”。

[IniWinCopy] 
camer.ini 
user.ini 
xvidMP4.ini 

cert2spc.exe ——-将cer证书转为spc证书

葡京正网网投 3

三、总结:
1. 将ocx文件以及第三方dll文件打包成cab文件:
Internet 软件分发单位是“软件包”,它由包含.INF文件或软件分发.OSD文件(或两者都包括)的.CAB文件所组成。一个分发单位也可以包含软件组件,如 ActiveX 控件(.OCX)、.DLL文件、.EXE文件、Java类文件或小程序。当Web页上OBJECT元素的CODEBASE特性引用包含.INF文件的. CAB文件时,Internet Explorer将自动把.CAB文件作为软件分发单位下载并安装,每次访问时还会自动检测版本并进行更新。
INF文件是一个文本文件,指定运行控件所需要下载或者呈交的文件(比如.DLL或者其它.OCX)。一个.INF文件就捆绑了.CAB压缩文件所有的必须文件。 缺省情况下,与现有硬盘中文件版本号相同的文件不被下载。
先自己写了一个inf文件,其中信息包括将.ocx文件,以及相关的.dll文件打包,并下载到文件夹:WINDOWSsystem32,详细标注如下:
[version]   
signature="$CHICAGO$"
AdvancedINF=2.0

[videoReg] 
HKCR,CLSID{4BDA0AA3-2164-44B7-8A88-208A145F51DC},"",%REG_SZ%,"Video Class" 
HKCR,CLSID{4BDA0AA3-2164-44B7-8A88-208A145F51DC}Control 
HKCR,CLSID{4BDA0AA3-2164-44B7-8A88-208A145F51DC}Implemented Categories 
HKCR,CLSID{4BDA0AA3-2164-44B7-8A88-208A145F51DC}Implemented Categories{7DD95801-9882-11CF-9FA9-00AA006C42C4} 
HKCR,CLSID{4BDA0AA3-2164-44B7-8A88-208A145F51DC}Implemented Categories{7DD95802-9882-11CF-9FA9-00AA006C42C4} 
HKCR,CLSID{4BDA0AA3-2164-44B7-8A88-208A145F51DC}InprocServer32,"", %REG_SZ%,"%11%VideoWeb.dll" 
HKCR,CLSID{4BDA0AA3-2164-44B7-8A88-208A145F51DC}InprocServer32,"ThreadingModel",%REG-SZ%,"Apartment" 
HKCR,CLSID{4BDA0AA3-2164-44B7-8A88-208A145F51DC}MiscStatus,"",%REG_SZ%,"0" 
HKCR,CLSID{4BDA0AA3-2164-44B7-8A88-208A145F51DC}MiscStatus1,"",%REG_SZ%,"131473" 
HKCR,CLSID{4BDA0AA3-2164-44B7-8A88-208A145F51DC}ProgID,"",%REG_SZ%,"VideoWeb.1.1" 
HKCR,CLSID{4BDA0AA3-2164-44B7-8A88-208A145F51DC}Programmable 
HKCR,CLSID{4BDA0AA3-2164-44B7-8A88-208A145F51DC}ToolboxBitmap32,"",%REG_SZ%,"%11%VideoWeb.dll,102" 
HKCR,CLSID{4BDA0AA3-2164-44B7-8A88-208A145F51DC}TypeLib,"",%REG_SZ%,"{FC4352CB-BB55-498C-BB21-E4BAE2FC2584}" 
HKCR,CLSID{4BDA0AA3-2164-44B7-8A88-208A145F51DC}Version,"",%REG_SZ%,"1.0" 
HKCR,CLSID{4BDA0AA3-2164-44B7-8A88-208A145F51DC}VersionIndependentProgID,"",%REG_SZ%,"VideoWeb.1" 
;end of INF file 

chktrust.exe ——-检测签名是否正确

4、选择“系统变量(S)”里的“新建(W)”按钮,打开“编辑系统变量”对话框,如图4所示,然后在“变量值(V)”里加入“;E/makeCAB”:

[DefaultInstall]   
CopyFiles=install.files
RegisterOCXs=RegisterFiles
[RInstallApplicationFiles]
CopyFiles=install.files
RegisterOCXs=RegisterFiles
[DestinationDirs]
install.files=11
[SourceDisksNames]   
1=%DiskName%,TestCAB.CAB,1

DestinationDirs:指的是装载目录或者文件的地址: 11 指定为系统目录 WINDOWS/SYSTEM 或者 WINNT/SYSTEM32; 
10 规定为窗口目录、WINDOWS或者WINNT。 
videoReg:如果是自己写的控件:可以在本地先用regsvr32 xxx.dll注册后,从注册表中找到上面的注册信息。 
当然以上仅仅是在internet上分发软件时一个很简单的inf文件,还有更复杂的inf文件。请看SDK。 

makecert.exe——制作数字证书

二、将用于打包的OCX控件放在E盘根目录下(本文档使用名为evS1300.ocx的控件来进行介绍),如图5所示,其中evS1300.ocx是本文档进行操作的控件对象,而mfc71.dll、msvcp71.dll、msvcr71.dll这三个文件通常是进行打包时一并打包的文件,但不是必须(推荐一起打包),其可在系统中的system32目录下找到,请自行准备。

[Add.Code]
pcpos.ocx=pcpos.ocx
Comm.dll=comm.dll
pcpos.dll=pcpos.dll
TCPCLNT.dll=TCPCLNT.dll

第二步:把video.inf, tdiio.dll,encoder.dll,decoder.dll,tdiio.ini,user.ini, 
camer.ini,drivo.ini.放在一个文件夹中。 
第三步:开始制作cab文件,我是用IExpress工具制作的(该工具在winntsystem32目录下面)。 
1:选择创建新的自解压指令文件。 
2:选择仅创建压缩文件(ActiveX安装) 
3:点击添加把你要供别人下载的文件添加 
4:点击浏览 输入*.cab文件的存放地址(包含文件名) 
5:就随便了 
好了制作完成。 
现在在你的网页中使用该控件,当别人访问你的网页时,如果他的机子上没有你的控件,浏览器就会自动下载安装。因为你的控件可能没有获得签名 
因此得在你的浏览器中把浏览器的安全级别降低。在internet 工具中选择安全,选择自定义。找到下载未签名的ActiveX控件。选择其下面的提示或者启用。 
在网页中插入: 
<OBJECT classid=clsid:4BDA0AA3-2164-44B7-8A88-208A145F51DC 
codebase="video.cab#version=2,0,0,1" 
id=Video1 style="HEIGHT: 507px; WIDTH: 718px"></OBJECT> 
该句. 
注意:得把*.cab 文件你和的网页放在同一目录下。或者在codebase中指定*.cab的路径。 

signcode.exe

葡京正网网投 4

[install.files]
pcpos.ocx=pcpos.ocx
Comm.dll=comm.dll
pcpos.dll=pcpos.dll
TCPCLNT.dll=TCPCLNT.dll

 

================

三、ActiveX发布步骤

[SourceDisksFiles]
pcpos.ocx=1
Comm.dll=1
pcpos.dll=1
TCPCLNT.dll=1

 

2、流程

1、单击“开始”à“动行(R)”à输入“cmd”à回车à进入到操作的控件所在的目录,如图6所示:

[pcpos.ocx]
file-win32-x86=thiscab   
RegisterServer=yes   
clsid={719A1D6E-7099-4123-9D63-F0118AFF2D61}   
DestDir=11   
FileVersion=1,0,0,1

 

以上根据需要来确定采用哪些工具,这里我采用了makecert.exe 、cert2spc.exe来制作认证的证书,signcode.来进行数字签名。

葡京正网网投 5

[Comm.dll]
file-win32-x86=thiscab   
RegisterServer=yes                        
DestDir=11   
FileVersion=1,0,0,1

 

进入DOS状态,进入上述工具所在目录,输入以下命令:

2、创建PVK文件(私人密匙文件),在命令行中输入“makecert -sk evS1300 evS1300.pvk -n CN=XXXXXXX公司”,然后回车,如图7所示:

[pcpos.dll]
file-win32-x86=thiscab   
RegisterServer=yes     
DestDir=11   
FileVersion=1,0,0,1

 

一、

葡京正网网投 6

[TCPCLNT.dll]
file-win32-x86=thiscab   
RegisterServer=yes     
DestDir=11   
FileVersion=1,0,0,1

 

makecert -sv test.pvk -n ”CN=test,E=test@test.com,O=test” test.cer

3、创建CER文件(公司证书),在命令行中输入“makecert -sk evS1300.pvk evS1300.cer”,然后回车,如图8所示,若出现“Successed”提示,则会在E:/evS1300目录下生成evS1300.cer文件,如图9所示:
葡京正网网投 7

[RegisterFiles]   
%11%pcpos.ocx

 

这个是制作证书, -sv是制作加密的文件,会给证书设定公钥和私钥(-sk则生成没有密钥的证书),CN是公司,E=EMail,O=认证公司的名称,test.cer是生成文件的名称。

葡京正网网投 8

注释:
"thiscab" 是一个关键字,意指包含该INF的CAB文件。也可以从网上下载所需要的DLL文件,只要指定一个HTTP 网址即可,如:
file-win32-x86=
关键字"file-win32-x86" 指定平台是 x86。
文件版本号可见属性。
"DestDir"指的是装载目录或者文件的地址: 11 指定为系统目录 WINDOWS/ /SYSTEM32;
"clsid" 指的是要安装控件的CLSID。

 

二、然后运行:Cert2SPC  test.cer  test.spc  将cer证书转为spc证书。

4、创建SPC测试软件出版商证明书,在命令行中输入“cert2spc evS1300.cer evS1300.spc”,然后回车,如图10所示:

制作cab:
使用WINDOWSsystem32iexpress.exe。
1)        选择“Create new Self Extraction Directive file”,点击下一步。
2)        选择“Create compressed files only(ActiveX Installs)”,点击下一步。
3)        点击Add,文件添加(pcpos.ocx,pcpos.dll,comm.dll,tcpclnt.dll),点击下一步。
4)        点击Browse,输入.CAB文件的存放地址(包含所取文件名),这里取TestCAB.CAB,并且要选中 “Store files using Long File Name inside Package”。点击下一步。
5)        选择“Don’t save”,一直点击下一步,直到完成。

VB的CAB包很简单,直接打包就可以了  
  Delphi不知道有没有这样的工具  
  VS.Net   2003   肯定有的  
  ============================下面是给OCX/DLL/CAB文件添加数字签名的方法======  
  首先要有工具包,包括以下几个软件:  
  makecert.exe     制作cer格式的证书,即X.509证书,同时可以创建私钥  
  cert2spc.exe     将cer格式证书转换成spc格式证书,即PKCS   #7证书  
  signcode.exe     将证书签署到ocx上去  
  chktrust.exe     检查签署证书后的ocx是否正确  
  还有一个certmgr.exe,是管理证书用的。可以从这里面导出root.cer来,  
  网上很多文章写到这个证书,但是在VC的安装盘中却找不到。其实,没  
  有也没关系的。这几个软件可以从VC的安装盘中找到。  
   
  下面是具体的步骤:  
  1、创建一个自己的证书文件:  
  makecert   /sv   "Record.PVK"   /n   "CN=公司名称,E=email,O=作者"   dream.cer  
  这里,Record.PVK表示新创建的私人密钥保存文件名  
              DreamCaptial是你想显示的公司名  
              dream.cer是你创建最后的证书文件名  
  这些根据你自己的要求填写,最后得到Record.PVK和dream.cer两个文件。  
  其中,运行过程中需要输入私人密钥的保护密码,一定要输入一致,不要  
  出错。  
   
  2、转换cer格式为spc格式(可以省略)  
  cert2spc   dream.cer   dream.spc  
  得到dream.spc文件。  
   
  3、给ocx进行签名  
  运行signcode,命令行的我没有试验通过,我是通过界面实现的。  
  signcode运行后会出现数字签名向导,首先选择你要签名的ocx,  
  下一步后会出现签名选项,一种是典型,一种是自定义。选择自定义,  
  这样才能从文件选择证书,选择前面制作的dream.spc,再下一步是  
  选择私钥文件,选择Record.PVK,输入私人密钥的保护密码,选择散  
  列算法,一般用md5就可以了,下一步是选择其他证书,直接下一步,  
  填写一下这个控件的声明,用户用ie浏览的时候,会弹出证书说明,  
  再下一步是加盖时间戳,我不会,直接下一步就完成了。  
   
  4、用chktrust检查是否正确  
  chktrust   -v   RecordProj.ocx  
   
  就这样,得到了一个测试证书,恩,虽然只是一个测试证书,但至  
  少保证这个ocx在ie浏览的时候能够弹出来一个窗口,问你是否安装,  
  而不是直接禁止了。  

这时制作的证书是没有任何认证公司认证的,通过认证的一年需要大约400美金。

葡京正网网投 9

注意:
如果控件已经在客户机注册,并且不是通过.CAB的方式注册,那么通过.CAB自动注册的时候,该控件将无法被更新。必须先手动删除该文件。

 

三、创建INF文件

5、创建INF文件,用记录本编辑以下信息

2. 对CAB文件进行数字签名
传说中数字签名之后就可以不出现提示而自动下载,所以也试试:
在Microsoft Visual Studio .NET 2003SDKv1.1Bin 中间有三个小工具,就用他们来实现数字签名。
1.Makecert.exe ---证书创建工具
2.Cert2Spc.exe ---发行者证书测试工具
3.Signcode.exe ---文件签名工具

 

[Version]

  1. [version]
  2. signature="$CHINA$"
  3. AdvancedINF=1.0
    1. [Add.Code]
  4. evS1300.ocx=evS1300.ocx
  5. msvcr71.dll=msvcr71.dll
  6. mfc71.dll=mfc71.dll
  7. msvcp71.dll=msvcp71.dll
    1. [evS1300.ocx]
  8. file=thiscab
  9. clsid={0440906E-9BD6-4F3E-B65A-39E1B339D9DA}
  10. FileVersion=1,0,0,0
  11. RegisterServer=yes
    1. [msvcr71.dll]
  12. file-win32-x86=thiscab
  13. RegisterServer=no
  14. DestDir=11
  15. FileVersion=7,10,3052,4
    1. [mfc71.dll]
  16. file-win32-x86=thiscab
  17. RegisterServer=no
  18. DestDir=11
  19. FileVersion=7,10,3077,0
    1. [msvcp71.dll]
  20. file-win32-x86=thiscab
  21. RegisterServer=no
  22. DestDir=11
  23. FileVersion=7,10,3077,0

步骤:
1)        makecert -ss name -n "CN=公司名" -sv d:pos.pvk -r d:pos.cer 其中sk-表示主题的密钥容器位置,ss-主题的证书存储名称, n-证书颁发对象,r-证书存储位置,-sv 导出私钥文件(为了签名使用)。注意:这个时候会让输入三次密码,三次要完全一致。
2)        使用Cert2Spc生成spc发行者证书(可选):cert2spc d:pos.cer c:pos.spc
3)        双击signcode,不带参数会启动签名向导。先选择要签名文件,下一步,选择“自定义”,下一步,选择“从文件选择”,添加刚生成的pos.cer证书,下一步,选择刚生成的私钥pos.pvk,再下一步,可spc证书,再一直下一步。添加时间戳,在时间戳填入http: //timestamp.verisign.com/scripts/timstamp.dll TestCAB.CAB,再下一步完成。

inf   的这样写:  
   
  -------inf   开始  
  [Version]  
  Signature="$CHICAGO$"  
  AdvancedInf=2.0  
   
  [Add.Code]  
  A.dll=A.dll  
   
  [A.dll]  
  file-win32-x86=thiscab  
  CLSID={F9043C88-F6F2-123A-A123-08002B2F49FB}  
  FileVersion=6,1,97,82  
  RegisterServer=Yes  
   
  --------inf   结束  
   
  注意:  
  (1)收集控件引用的所有DLL,包括控件引用的DLL又引用的其它DLL。将所有DLL的名称写入INF文件的[Add.Code]部分,最先注册的DLL,放在最上面,按顺序加入所有文件名称。  
  (2)按照[Add.Code]的文件名称顺序加入每DLL的[DLL名称]部分.  
  (3)clsID   的获取:从注册表的   HKEY_CLASSES_ROOTCLSID   中查找,查询时,只输入文件名(不要后缀)  
  (4)FileVersion的获取:选择文件,单击右键,[属性]-[版本],将文件版本中的“.”换成“,”。  
  (5)需要注册的DLL:RegisterServer=yes   ,不需要注册的DLL:RegisterServer=No  
  (6)不要使用这一行:DestDir=11  
      “DestDir”是将要加载文件的目录所在的位置:11   指定系统目录为   WINDOWS/SYSTEM   或   WINNT/SYSTEM32;10   指定   Windows   目录、WINDOWS   或   WINNT。如果未指定任何   DestDir(典型情况),则代码安装在固定的   OCCACHE   目录中。  
   
  这是我研究了很长时间,得出的结果。

signture=”$Title$”

葡京正网网投 10

这样就对CAB文件进行了签名,但是这个时候点击这个文件会发现证书不可用,原因是证书没有安转。文件属性->数字证书->详细信息-〉查看证书-〉安装证书,进入安装证书向导,存放区域选择“受信任的根证书颁发机构”,点击完成即可。

 

AdvancedINF=2.5

葡京正网网投 11

在客户端测试:
1)        加入证书,浏览器-〉工具-〉Internet选项-〉内容-〉证书-〉受信任的颁发机构-〉导入证书。
2)        在有证书的情况下,如果服务器没有加入“可信任网址”,提示下载的时候会显示证书所签内容,没有证书则提示为“未知”。
3)        如果服务器已加入“可信任网址”,并且已导入证书,则不提示任何信息,在用户毫无感觉情况下下载。如果没有加入“可信任网址“,控件可以正常下载但仍然不能正常使用,与是否签名无关。

 

[Add.Code]

在evS1300.inf的内容里,[version]和[Add.Code]项是必须的,[Add.Code]的键值项的多少取决于以下你所配制项的多少。[msvcr71.dll]、[mfc71.dll]、[msvcp71.dll]就是上面我所说不是必须的项,只要你想把msvcr71.dll、mfc71.dll、msvcp71.dll包括在发布包里,那这么三项就必须写在inf里,而这三项的具体内容是固定的,可复制过去即可。最为关键的就是[evS1300.ocx]项,其中有clsid和FileVersion就是evS1300.ocx的classId和version,这要求必须一至,否我们发布出去的CAB包时不能在客户端自动更新下载安装。说到这里,那我们如何才能知道evS1300.ocx里面的classId和version呢?我在上面的必备条件里介绍到有一个用于查看ocx控件的工具ActvxDoc,对,就是用它,我们双击这个文件运行它,此时可以看到图13所示的界面:
葡京正网网投 12

四、问题:
1.是否可以不添加“可信任网址”。
2.数字签名的作用,授权证书与不授权证书的区别。

 

Player.ocx   =   Player.ocx

在图13的界面里,点击“File”à“Open…”,打开您所要查看的OCX控件,如图14所示:

CAB包制作总结(explorer.exe打包)

avcodec.dll   =   avcodec.dll

葡京正网网投 13

1.       步骤:INF文件编写->打包->传到相应目录下

葡京正网网投,avformat.dll   =   avformat.dll

打开了控件之后,我们在界面的右边部位“Class”的下拉框里选择“”就可以看到我们想要查找的FileVersion和classId,如图15所示:

2.       INF编写:

avutil.dll         =   avutil.dll

葡京正网网投 14

[Version]

H264Decoder.dll =  H264Decoder.dll

6、创建CAB文件,在命令行中输入“cabarc -s 6144 n evS1300.cab msvcr71.dll mfc71.dll msvcp71.dll evS1300.ocx evS1300.inf”,然后回车,如图16所示:
葡京正网网投 15

signature="$Harbour$" //其中Harbour为自己定义的名称

NetLink.dll    =   NetLink.dll

7、使用Code Signing Wizard签署一个CAB文件,首先双击运行工具集里面的signcode.exe(或在命令行里直接输入“signcode”后回车),系统会弹出如图17所示的数字签名向导:
葡京正网网投 16

AdancedINF=2.0

[NetLink.dll]

8、单击“下一步(N)”按钮,来到图18所示,选择要进行数字签名的且已做成CAB包的文件evS1300.cab文件。

[Add.Code] //所要加载的所有文件

file-win32-x86=thiscab

葡京正网网投 17

LhardvsSdk.ocx=LhardvsSdk.ocx

[avcodec.dll]

9、选择好CAB包后单击“下一步(N)”按钮,在选择想要的签名类型里选择“自定议(C)”并单击“下一步(N)”按钮,如图19所示:

FFSHOWcodec.ax=FFSHOWcodec.ax

file-win32-x86=thiscab

葡京正网网投 18

avutil-49.dll=avutil-49.dll

[avformat.dll]

10、接下来单击“从文件选择(F)”按钮,选择刚刚制作的evS1300.cer,如图20所示:

HarbourSdk.dll=HarbourSdk.dll

file-win32-x86=thiscab

葡京正网网投 19

avcodec-51.dll=avcodec-51.dll

[avutil.dll]

11、在图20中单击“下一步(N)”按钮来到图21,然后在图21里选择“CSP中的私钥(K)”。

avformat-51.dll=avformat-51.dll

file-win32-x86=thiscab

葡京正网网投 20

[LhardvsSdk.ocx]//注意:一定要把控件信息写在动态库信息之前

[H264Decoder.dll]

12、在图21中单击“下一步(N)”按钮,然后在图22中的散列算法中选择“shal”,并单击“下一步(N)”按钮。

file-win32-x86=thiscab

file-win32-x86=thiscab

葡京正网网投 21

clsid={A7428F10-8C34-4FA8-A5A9-C55CDEBE4A25}

[葡京网投哪个正规,Player.ocx]

13、在“证书路径中的证书”中选择“证书路径中的所有证书,包括根证书(C)”,在“其它证书(可选)”中选择“包括在以下PKCS #7 证书(.p7b)文件中的证书(P):”,并单击“浏览(R)…”按钮选择evS1300.spc文件,选择完后单击“下一步(N)”按钮,如图23所示:
葡京正网网投 22

FileVersion=1,0,0,1

file-win32-x86=thiscab

14、接下来在弹出的“数据描述”窗口中输入公司的名称和网址并单击“下一步(N)”按钮,如图24所示:
葡京正网网投 23

RegisterServer=yes //一定为YES

clsid={CD55E5EC-F555-5555-5555-555A55C55DC5}

15、现大部份工作都已完成,在接下来的一步当中是可选的操作,其作用只是为CAB加入时间戳,此步骤完全可以不做,如图25所示:

DestDir=11

RegisterServer=yes

(这里我提拱三个免费的代码签名时间戳地址)

[FFSHOWcodec.ax]

FileVersion=1,0,0,2

VeriSign:

file-win32-x86=thiscab

其中大扩后中的类容对于dll文件来说若是不需要注册则可以省略。

Comodo:

FileVersion=1,0,0,1

四、使用cabarc.exe将ocx及所需dll文件和inf文件打包成CAB文件包

GeoTrust/TrustCenter:

RegisterServer=yes

将所需的ocx和dll及inf文件放在同一个目录下,然后在dos下进入到该目录下,键入以下命令:

葡京正网网投 24

DestDir=11

F:CabsdkBINCABARC -s 6144 n CamView.CAB Player.ocx avcodec.dll avformat.dll avutil.dll H264Decoder.dll NetLink.dll Player.inf

16、完成,在图25中单击“下一步(N)”按钮便可来到数字签名向导的最后一步,即操作总览,如图26所示,单击“完成”按钮便可大功告成,如图27所示:
葡京正网网投 25

[avutil-49.dll]

注 意这里“F:CabsdkBIN”是cabarc.exe所在目录,CamView.CAB是要生成的CAB文 件,NetLink.dll  avcodec.dll avformat.dll avutil.dll H264Decoder.dll Player.ocx  Player.inf 是所需的文件,按重要顺序排列,inf文件放在最后。系统提示成功之后,会在ocx同目录下生成CamView.CAB文件。打包还可以使用其他工具,如 老毛桃cab打包等。

葡京正网网投 26

file-win32-x86=thiscab

五、使用signcode.exe给OCX文件进行数字签名。(图形化界面操作)

FileVersion=1,0,0,1

双击signcode.exe后出现一个数字签名向导

RegisterServer=no//如果是辅助的动态库,则不需要注册到服务器

下一步   选择需要签名的文件(CamView.cab)

DestDir=11

下一步   这里选择了自定义

[HarbourSdk.dll]

下一步   选择签名证书,从文件选择,选择刚才做好的test.spc

file-win32-x86=thiscab

下一步   私钥,磁盘上的私钥文件,点浏览选择刚才做好的test.pvk

FileVersion=1,0,0,1

下一步   输入密码

RegisterServer=no

下一步   选择算法,这里我选择的是sha1

DestDir=11

下一步   默认

[avcodec-51.dll]

下一步   描述:输入安装证书时提示的文字,随便输入

file-win32-x86=thiscab

下一步   时间   默认

FileVersion=1,0,0,1

下一步   完成

RegisterServer=yes

六、将CAb文件挂上服务器并修改网页中控件部分

DestDir=11

<OBJECT id=CamViewer classid=”clsid:CD55E5EC-F555-5555-5555-555A55C55DC5″ CODEBASE=”CamView.CAB#version=1,0,0,2″height=500 width=645 hspace=0 vspace=0 VIEWASTEXT>  </OBJECT>

[avformat-51.dll]

其中CODEBASE=”这里填写CAB文件的路径,#version=1,0,0,2″是控件的版本号,要与ocx的版本号一致。

file-win32-x86=thiscab

七、升级

FileVersion=1,0,0,1

只要在源代码中更改Player.ocx文件中对应的版本 号,并同时更改网页调用控件的版本号就可以了,下一次客户访问这个页面时会自动检测并提示安装新控件,新控件会覆盖旧版本的控件。

RegisterServer=no

原文地址:

DestDir=11

//INF END

3.打包,在运行中输入:iexpress.exe

选择creat new self extraction directive file 点击下一步

选择creat compressed files only (activex installs) 点击下一步

加载包括INF在内的所有文件 点击下一步

选择路径后点击store files using long file name inside package 点击下一步

选择don’t save点击下一步

此时在你指定的路径下已经有您要打的CAB包存在了

4.只需将您打好的CAB包放在您的WEB目录下   

5.在WEB页面中加CODEBASE属性,CAB包就可以自动下载安装了.

本文由葡京网投哪个正规发布于联系我们,转载请注明出处:从网页上下载控件时制作CAB包的方法,OCX控件下载并自动更新

关键词:

上一篇:没有标题,今天写给你

下一篇:听顾慧君朗诵徐托柱诗,悲伤向日葵