首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

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

2012-12-28 
通过WEB页面自动发布客户端软件作为软件产品发布的途径之一,开发人员应该了解通过 WEB 页面发布客户端软件

通过WEB页面自动发布客户端软件
作为软件产品发布的途径之一,开发人员应该了解通过 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生成的非可信证书可能会产生警告或安装失败。

热点排行