`
zpball
  • 浏览: 910038 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多
一、程序描述:
程序环境:windows Xp sp2, ie 6, tomcat 5.5, vc++6.0
程序过程:控件做成ocx文件,用于客户端调用本地硬件,其中有用到第三方几个.dll文件。采用windows自带iexpress.exe 打包成cab文件,在服务器端jsp页面进行控件调用,下载cab文件并自动注册。
二、程序问题:
遇到问题:
1.       cab文件无法下载,而且根本不加提示。
2.       下载好的cab文件在system32中能够看到,但是页面仍然不能显示,一把红叉,并且无法使用。
问题测试:
1.       浏览器页面根本没有下载提示,考虑应该是cab的路径问题,也曾考虑是ie浏览器的安全问题。将安全降到最低测试。反复更改cab路径。
2.       这个问题最郁闷,搞了很久。考虑首先是安全问题,然后在网上搜索之后说是sp2调高了安全策略,有说降低安全,有说需要对程序进行数字签名。
问题解决:
1.       确实是路径不对,与安全无关。当在jsp中代码为:
<OBJECT id=pos codebase="TestCAB.CAB#version=1,0,0,1" height=100 width=100 classid="CLSID:719A1D6E-7099-4123-9D63-F0118AFF2D61" VIEWASTEXT></OBJECT>
TestCAB.CAB文件应该放置在tomcat5.5安装目录Tomcat 5.5\webapps下该调用jsp所在的工程下。
2.       不需要更改安全级别,而应该在Internet选项-〉安全-〉受信任的站点-〉站点 中添加服务器地址。注意:不要选复选框“对该区域中的所有站点要求服务器验证”。
三、总结:
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文件打包,并下载到文件夹:\WINDOWS\system32,详细标注如下:
[version]   
signature="$CHICAGO$"
AdvancedINF=2.0
[DefaultInstall]   
CopyFiles=install.files
RegisterOCXs=RegisterFiles
[RInstallApplicationFiles]
CopyFiles=install.files
RegisterOCXs=RegisterFiles
[DestinationDirs]
install.files=11
[SourceDisksNames]   
1=%DiskName%,TestCAB.CAB,1
[Add.Code]
pcpos.ocx=pcpos.ocx
Comm.dll=comm.dll
pcpos.dll=pcpos.dll
TCPCLNT.dll=TCPCLNT.dll
[install.files]
pcpos.ocx=pcpos.ocx
Comm.dll=comm.dll
pcpos.dll=pcpos.dll
TCPCLNT.dll=TCPCLNT.dll
[SourceDisksFiles]
pcpos.ocx=1
Comm.dll=1
pcpos.dll=1
TCPCLNT.dll=1
[pcpos.ocx]
file-win32-x86=thiscab   
RegisterServer=yes   
clsid={719A1D6E-7099-4123-9D63-F0118AFF2D61}   
DestDir=11   
FileVersion=1,0,0,1
[Comm.dll]
file-win32-x86=thiscab   
RegisterServer=yes                        
DestDir=11   
FileVersion=1,0,0,1
[pcpos.dll]
file-win32-x86=thiscab   
RegisterServer=yes     
DestDir=11   
FileVersion=1,0,0,1
[TCPCLNT.dll]
file-win32-x86=thiscab   
RegisterServer=yes     
DestDir=11   
FileVersion=1,0,0,1
[RegisterFiles]   
%11%\pcpos.ocx

注释:
"thiscab" 是一个关键字,意指包含该INF的CAB文件。也可以从网上下载所需要的DLL文件,只要指定一个HTTP 网址即可,如:
file-win32-x86=http://www.mysite.com/mydir/NEEDED.DLL
关键字"file-win32-x86" 指定平台是 x86。
文件版本号可见属性。
"DestDir"指的是装载目录或者文件的地址: 11 指定为系统目录 WINDOWS/ /SYSTEM32;
"clsid" 指的是要安装控件的CLSID。
制作cab:
使用\WINDOWS\system32\iexpress.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”,一直点击下一步,直到完成。
注意:
如果控件已经在客户机注册,并且不是通过.CAB的方式注册,那么通过.CAB自动注册的时候,该控件将无法被更新。必须先手动删除该文件。
2. 对CAB文件进行数字签名
传说中数字签名之后就可以不出现提示而自动下载,所以也试试:
在\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin 中间有三个小工具,就用他们来实现数字签名。
1.Makecert.exe ---证书创建工具
2.Cert2Spc.exe ---发行者证书测试工具
3.Signcode.exe ---文件签名工具
步骤:
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,再下一步完成。
这样就对CAB文件进行了签名,但是这个时候点击这个文件会发现证书不可用,原因是证书没有安转。文件属性->数字证书->详细信息-〉查看证书-〉安装证书,进入安装证书向导,存放区域选择“受信任的根证书颁发机构”,点击完成即可。
在客户端测试:
1)        加入证书,浏览器-〉工具-〉Internet选项-〉内容-〉证书-〉受信任的颁发机构-〉导入证书。
2)        在有证书的情况下,如果服务器没有加入“可信任网址”,提示下载的时候会显示证书所签内容,没有证书则提示为“未知”。
3)        如果服务器已加入“可信任网址”,并且已导入证书,则不提示任何信息,在用户毫无感觉情况下下载。如果没有加入“可信任网址“,控件可以正常下载但仍然不能正常使用,与是否签名无关。
四、问题:
1.是否可以不添加“可信任网址”。
2.数字签名的作用,授权证书与不授权证书的区别。

参考文章:
如何制作cab包(解决不能注册的问题)
http://kiki1120.iteye.com/blog/512474
分享到:
评论

相关推荐

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

    【Web发布cab文件打包ActiveX控件总结】 在开发Web应用程序时,有时需要在客户端运行ActiveX控件来实现特定功能,例如与本地硬件交互。本文主要探讨如何将ActiveX控件打包成cab文件并在网页中正确调用,以及解决...

    打包activex控件方法

    标题中的“打包activex控件方法”指的是将ActiveX控件打包成CAB( Cabinets)文件,以便在网页上发布和安装。ActiveX是一种由微软开发的技术,允许在Internet Explorer浏览器中运行小型应用程序或控件,提供增强的...

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

    总结,将ActiveX控件打包成CAB文件并置于网页中自动下载安装是过去常见的一种部署方法,但随着浏览器技术和安全性的进步,这一方法已逐渐过时。了解这些知识点有助于理解早期Web开发的历史和技术变迁。

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

    在本文中,我们将深入探讨如何使用Visual Studio 2008 (C#) 开发ActiveX控件,以及如何创建和打包CAB文件,以便在网页中使用和更新。ActiveX技术允许开发者创建可以在多种应用程序中使用的组件,尤其是在网页中通过...

    ActiveX控件cab打包、Web嵌入、自动升级攻略[归类].pdf

    - **打包过程**:在打包ActiveX控件之前,你需要创建一个INF文件,这个文件包含了安装控件所需的所有信息。INF文件的 `[version]` 部分定义了文件的版本信息,而 `[Add.Code]` 部分则列出了要安装的控件和依赖的DLL...

    ActiveX控件打包发布

    ### ActiveX控件打包发布知识点详解 #### 一、ActiveX控件概述 **ActiveX** 是一种由微软开发的技术,允许在不同的编程语言中创建交互式的对象。这些对象可以在不同的应用程序之间共享,并且能够在浏览器中运行。...

    ActiveX控件的cab打包程序

    在实际操作中,开发者会使用这些工具来生成、签名和打包ActiveX控件,确保它们能够在用户的计算机上安全、正确地运行。然而,随着现代浏览器对ActiveX支持的减少,这种技术在新的开发项目中已经较少使用,更多地转向...

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

    为了便于部署和更新这些控件,开发者通常会采用将控件打包成.Cab格式文件,并将其嵌入到网页中的方法,让用户能够自动下载并安装所需的ActiveX控件。本文将详细介绍如何使用`cabarc.exe`和`ActiveX Manager`等工具...

    C__ActiveX控件开发_打包cab安装部署_含源码及全过程开发文档

    【C# ActiveX控件开发】在传统的C/S(客户端/服务器)架构中,客户端可以直接安装应用程序以实现特定业务功能。然而,在B/S(浏览器/服务器)架构中,由于所有程序运行在服务器端,客户端仅通过浏览器访问,实现相同...

    把ActiveX打包成CAB用于在网页上发布

    - 创建INF文件:INF文件是CAB打包过程中的关键,它包含了CAB文件内的文件列表、安装指令和数字签名信息。 - 编辑INF文件:在INF文件中,需要指定控件的类ID(CLSID)、文件路径、版本信息等,确保浏览器能够正确...

    vs制作activex控件

    总结,制作ActiveX控件涉及多个步骤,从使用Visual Studio创建项目,设计和实现控件功能,到打包CAB文件,颁发和签名证书,以及最终的安装和使用。尽管现代技术已转向更安全的Web标准,如HTML5,但ActiveX在特定场景...

    C#开发ActiveX控件及制作CAB包总结

    - 创建一个ASP.NET网站项目,如“Web”,用于测试和演示ActiveX控件。 2. **设计控件**: - 在用户控件中添加必要的UI元素,例如Panel、GroupBox和Label等。在“HelloBossmaActiveX”类中,`NowTime` Label控件...

    OCX控件打包成CAB--cab,html文件

    标题 "OCX控件打包成CAB--cab,html文件" 涉及到的是在IT行业中关于ActiveX控件和 CAB( Cabinet)文件的使用,以及如何将这些控件集成到HTML页面中以供JavaScript调用。ActiveX是微软推出的一种技术,允许在Web...

    网站activex控件ocx打包工具

    网站ActiveX控件OCX是Windows操作系统中一种用于增强网页交互功能的组件,它允许开发者在Internet Explorer浏览器中实现更复杂的功能,如多媒体播放、文件操作等。OCX控件通常由开发人员编写,然后发布给用户安装,...

    将ocx打包成CAB控件的工具 makeCAB

    在Web上分发ActiveX控件时,CAB文件可以作为一个单一的下载单元,便于用户安装。 使用`makeCAB`创建CAB文件的步骤大致如下: 1. **配置文件**:首先,你需要创建一个`.INF`配置文件,其中包含了关于要打包的OCX...

    制作Activex控件的CAB包

    总结来说,制作ActiveX控件的CAB包是一个涉及多个步骤的过程,包括文件压缩、清单文件创建、数字签名以及可能的安装配置。SignTool在这里的作用是为控件和CAB包提供数字签名,保证其安全性和可靠性。理解并掌握这些...

    WEB开发中控件打包的CAB文件封装器

    总结来说,“WEB开发中控件打包的CAB文件封装器”是一种高效且安全的控件分发方式,利用CABARC.EXE和CABINET.DLL等工具,开发者可以便捷地创建和管理CAB文件,实现控件的自动化打包。同时,理解CAB文件的结构和工作...

    VS2012C#开发ActiveX控件、生成MSI与制作CAB文件

    在IT领域,开发ActiveX控件、生成MSI安装包以及制作CAB文件是软件发布过程中常见的步骤。这里我们将深入探讨使用Visual Studio 2012(VS2012)和C#语言进行这些操作的相关知识点。 首先,ActiveX控件是微软在90年代...

    发布MFC ActiveX控件并实现自动更新

    #### 三、打包ActiveX控件 完成编译后,接下来需要对ActiveX控件进行打包处理,以便于发布。这里使用的是`PackageForTheWeb`工具,该工具可以将控件及相关文件打包成适合网络发布的格式。 1. **启动`...

Global site tag (gtag.js) - Google Analytics