`
marlboro027
  • 浏览: 55208 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

通过WEB页面自动发布客户端软件

    博客分类:
  • ocx
阅读更多
作为软件产品发布的途径之一,开发人员应该了解通过 WEB 页面发布客户端软件的基本方法和流程。发布过程涉及到软件模块签名、安装脚本和打包过程,具体流程如下:
  1.获取或生成一个软件出版证书(本文通过自已生成数字证书进行演示)
  2.使用证书对需要发布的软件模块进行数字签名(建议,可省略)
  3.编写INF安装脚本,并随同软件模块打包到CAB文件
  4.对CAB文件进行数字签名
  5.通过OBJECT CODEBASE HTML标记在WEB页面中嵌入CAB引用

  在开始这个过程前,先准备好所需的工具:
  Cabarc.exe - 用于打包生成 CAB 文件
  Makecert.exe - 生成签名CAB文件的数字证书
  Cert2Spc.exe - 生成出版商说明文件
  Signtool.exe - 数字签名向导
  VS2005中,这些工具都可以在 Microsoft Visual Studio 8\Common7\Tools\Bin 目录下找到。

  以一个OCX发布为例(Target.ocx依赖于reiler.dll),整个流程可以以一个批处理过程完成:

rem 生成 CAB,文件顺序必须与 INF 文件中相同
CABARC -s 6144 n Client.CAB Target.ocx relier.dll Client.INF
rem 生成证书 sk:私钥 ss:描述 n:CN=公司名称 -m:有效月数 证书名称:CERT.cer
MAKECERT -sk Clientsk -ss “Client Certification” -n CN=”Organization Description” Client.cer
rem 生成出版商说明文件
CERT2SPC Client.cer Client.spc
rem 数字签名向导
signtool signwizard
rem 应用在网页中,注意正确的CLSID和CODEBASE版本号,否则可能每次都会执行安装过程

  上面的流程中我省略了对模块Target.ocx和relier.dll的数字签名过程,这个过程也可以通过 signtool signwizard来完成。下面给出Client.INF的脚本内容:

[version]
; 不要修改 signature,在 NT 和 Win95 中为 CHICAGO
signature=”$CHICAGO$”
AdvancedINF=2.0
[Add.Code]
Target.ocx = Target.ocx
relier.dll = relier.dll
; 注意上面的排列顺序应该是逆序的,即前面的文件可以依赖于后面的文件
;11 系统目录(System32); 10 Windows目录(Windows/WinNT)
; 下面的顺序则相反,根据依赖关系将依赖最少的放在最前面
[relier.dll]
file-win32-x86=thiscab
DestDir = 11
[Target.ocx]
file-win32-x86=thiscab
clsid={A13E4E95-3C46-437F-9339-37656D97C238}
;FileVersion=1,0,0,0
DestDir = 11
RegisterServer=yes

  INF文件的规范参考http://technet.microsoft.com/zh-cn/library/cc768164(en-us).aspx,通常对于设备驱动程序而言,所使用的INF文件会比普通应用程序要复杂得多。

  当用户访问WEB页面时,浏览器检测到OBJECT标记,根据指定的CLSID和CODEBASE版本号进行检测,如果本地版本号低于CODEBASE中的版本号则下载CAB并通过INF文件执行安装过程。下面给出signtool signwizard的过程:

步骤1:选择需要签名的CAB文件
步骤2:签名方式选择自定义
步骤3:证书“从文件选择”,选择在批处理流程中已经生成的PKCS#7证书 Client.spc
步骤4:私钥中选择“CSP中的私钥”,然后从“密钥容器”中选择在批处理流程中已经生成的私钥Clientsk
步骤5:选择一种散列算法,通常情况下我们使用SHA-1
步骤6:使用默认的“证书路径中的所有证书”,这样如果你的证书来自于CA,那么在客户系统中证书将会被认为是可信的
步骤7:填写数据描述,指定安装包描述信息(将会在安装时显示给用户)和web参考地址
步骤8:略过时间戳,即可完成数字签名


  最后在WEB页面中嵌入OBJECT标签:
  <OBJECT ID=”ClientDemo” ClassID=’CLSID:D18624C6-4939-47D1-8EFC-CA73B9061B55′ CODEBASE=’Client.CAB’ WIDTH=0 HEIGHT=0></OBJECT>
  需要注意的是,是否能够成功安装还与用户的浏览器设置相关,在默认情况下,需要使用可信的CA证书能够保证安装顺利完成,而自己使用makecrt或openssl生成的非可信证书可能会产生警告或安装失败。

分享到:
评论

相关推荐

    Node.js-WebSSH2基于Web的SSH2客户端使用xterm.jssocket.io和ssh2实现

    首先,xterm.js是一个轻量级的终端组件,它可以在Web页面中模拟一个终端界面。它可以渲染ANSI转义序列,使得输出内容能够包含各种颜色和格式,与传统终端非常接近。在WebSSH2项目中,xterm.js是用户与远程服务器交互...

    Web客户端应用程序性能测试自动化研究

    它通过模拟Web客户端与Web服务器之间的通信环境,利用测试用例中的Java/JavaScript代码来获取客户端软件的工作性能数据。例如,LoadPage测试就是一种实际应用,它通过加载特定页面,监测加载过程中的性能指标,评估...

    C#用Activex实现Web客户端读取RFID功能

    在IT行业中,RFID(Radio Frequency Identification)技术是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,无需人工干预。C#编程语言结合ActiveX技术,可以实现在Web客户端读取RFID...

    web项目页面缓存清除,不用每次刷新浏览器

    通过以上知识点,开发者可以更好地理解和掌握页面缓存清除的策略,确保用户始终能看到及时更新的Web项目内容。同时,提供的操作手册和资源文件将作为实践指导,帮助开发者解决实际开发中遇到的缓存问题。

    SignalR Winform服务端、客户端实现,附带web端调用Demo

    - 可能还包含了一个简单的Web页面,展示如何在Web环境中调用SignalR集线器的方法。 - 示例代码可能还包括了测试用例或说明文档,帮助理解如何运行和测试整个系统。 通过这个项目,你可以学习到如何在不同的客户端...

    web和客户端交互的插件

    此主题主要关注Web应用程序如何通过软件或插件与客户端(包括浏览器和硬件)进行互动,以及如何利用技术如HTML和SpringBoot来实现这一目标。以下是对这些知识点的详细阐述: 首先,Web和客户端交互涉及到Web应用...

    http长连接的实现,web端自动获取消息,不刷新页面

    为了使Web端能够实时更新信息,我们还需要在客户端使用AJAX或者Fetch API来监听WebSocket事件,而不是通过页面刷新。当接收到服务器的新消息时,可以在JavaScript中动态更新DOM元素,实现页面内容的实时更新。 此外...

    手机客户端 访问WEB

    这里的"手机客户端访问WEB TOMCAT"主题,主要涉及的是如何让移动应用通过网络与运行在TOMCAT服务器上的Web应用程序进行交互。TOMCAT是一个广泛使用的开源Java Servlet容器,它实现了Java EE的Web部分,包括Servlet和...

    web.net上实现类似ftp客户端上传

    1. **Web上传组件**:在Web页面上,可以使用HTML5的`&lt;input type="file"&gt;`标签创建一个文件选择器,让用户选择要上传的文件。通过JavaScript的`FormData`对象,我们可以获取选中的文件并将其发送到服务器。此外,还...

    各种web页面

    在IT行业中,Web页面是互联网应用的核心组成部分,它呈现了用户与服务器之间的交互界面。"各种Web页面"这个标题和描述暗示我们将探讨不同类型的Web页面、它们的结构、功能以及如何构建它们。以下是对这个主题的详细...

    将web页面中的数据导出到EXCEL并自动打印

    本文将详细讲解如何实现“将Web页面中的数据导出到Excel并自动打印”的技术流程。 首先,我们需要理解Web页面数据导出到Excel的基本原理。通常,这涉及到JavaScript或服务器端语言(如Python、Java、PHP等)的配合...

    使用Eclipse的Axis1.4插件开发Web Service及客户端

    - 为了测试客户端,可以创建一个JSP页面,导入必要的服务代理类(如`UserProxy`),并通过表单提交调用Web Service。 通过以上步骤,开发者可以方便地在Eclipse环境中使用Axis1.4插件实现Web Service的发布和消费...

    如何复制excel内容至web页面中

    在IT行业中,尤其是在数据分析、报表制作以及网页开发等领域,经常需要将Excel中的数据或内容导入到Web页面中。这个过程看似简单,但涉及到的技术细节却不少。本篇将详细讲解如何实现这一操作,并探讨相关工具和技术...

    基于Python的Web页面自动登录工具设计与实现-虞菊花.pdf

    Web 应用的安全性在当前网络环境中至关重要,而基于Python的Web页面自动登录工具的设计与实现,旨在简化登录流程,提高效率,并可用于渗透测试和安全性评估。本文由虞菊花和乔虹共同完成,探讨了如何利用Python构建...

    获取客户端MAC地址Demo已经使用说明

    它通过安装一个客户端控件,使得Web页面能够与用户的本地系统进行更深入的交互,从而获取到客户端的MAC地址。这个控件通常是由JavaScript或者ActiveX等技术编写,可以在用户同意的情况下在浏览器内运行。 在这个...

    在LabVIEW中发布VI到WEB

    下面提供了一个简单的HTML代码示例,用于展示如何在Web页面中嵌入发布的LabVIEW VI: ```html CLASSID="CLSID:A40B0AD4-B50E-4E58-8A1D-8544233807AF" WIDTH=914 HEIGHT=667 CODEBASE="ftp://ftp.ni....

    web端实现app客户端输入验证码的效果

    在Web开发中,为了增强安全性,验证用户身份或者防止机器人自动操作,经常需要用到验证码功能。本文将详细讲解如何在Web端实现类似App客户端输入验证码的效果,主要涉及JavaScript技术,特别是前端交互部分。 首先...

    js前端浏览器打开本地exe程序的demo

    功能:在web浏览器页面上有一个按钮,点击按钮,调起本地的.exe程序客户端。通过添加注册表的方式实现该功能。 能做到什么: 1. 打开各种应用:用户可以通过点击按钮来启动本地的.exe程序客户端,从而实现打开各种...

    AnPyLar一个用于创建Web应用的Python客户端

    AnPyLar是一个基于Python的Web应用程序开发框架,专为构建现代、响应式的客户端Web应用而设计。这个框架结合了Python的简洁性和JavaScript库的能力,尤其是AngularJS的特性,为开发者提供了一种高效且直观的方式来...

Global site tag (gtag.js) - Google Analytics