通过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:略过时间戳,即可完成数字签名
 
sign

 

  最后在WEB页面中嵌入OBJECT标签:

  <OBJECT ID="ClientDemo" ClassID='CLSID:D18624C6-4939-47D1-8EFC-CA73B9061B55' CODEBASE='Client.CAB' WIDTH=0 HEIGHT=0></OBJECT>

  • 0
    点赞
  • 2
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 2 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

qrlvls

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值