互连网的广泛应用使得基于网络的软件成为现今软件应用的主流......
二、基于Internet发布软件的具体实现
2.1 制作测试软件出版商证书:
使用Visual C++ 5.0 光盘中CAB&SIGN目录下的 MAKECERT和 CERT2SPC 公用程序。举例来说,制作分两步:
(1)做一个私人密匙文件MYKEY.PVK 和一个公司证书CERT.CER,运行公用程序MAKECERT,命令为:
MAKECERT -u:MyKey -n:CN=Company -k:MYKEY.PVK CERT.CER
其中MyKey是密匙名,Company是公司名。注意:公用程序 MAKECERT 在命令行选项中区分大小写,因此必须使用小写的-u、-n以及-k,对于-n选项的值必须是大写的CN。
(2)完成名为CERT.SPC测试软件出版商证书的制作,运行CERT2SPC,命令如下:
CERT2SPC ROOT.CER CERT.CER CERT.SPC
其中CERT.SPC文件是利用第一步创建的CERT.CER文件以及CAB&SIGN目录下提供的ROOT.CER文件创建的。
2.2 打包待发布的ActiveX控件和相关链接库:
使用CAB&SIGN目录下的CABARC.EXE,举例来说,过程分两步:
(1) 创建一个INF文件:
INF文件是一个文本文件,指定运行控件所需要下载和注册的组件(比如DLL或其它OCX)。一个INF文件描述了CAB压缩包中所有必须的文件。在缺省情况下,若客户端系统中有压缩包中的文件,则版本号相同的文件不被下载。一个INF文件(texture.inf)的示例为:
[version] signature="$CHICAGO$" AdvancedINF=2.0 [Add.Code] Cards.ocx=Cards.ocx mfc42.dll=mfc42.dll opengl32.dll=opengl32.dll glu32.dll=glu32.dll [Cards.ocx] file-win32-x86=thiscab clsid={26E6AD0A-ACEF-11D4-B58D-FA8AFE1FC3B9} FileVersion=1,0,0,1 RegisterServer=yes [mfc42.dll] file-win32-x86=thiscab RegisterServer=yes [opengl32.dll] FileVersion=4,0,0,0 hook=openglinstaller [glu32.dll] FileVersion=4,0,0,0 hook=openglinstaller [openglinstaller] file-win32-x86=OpenGL95.cab run=%EXTRACT_DIR%\OpenGL95.exe |
其中条目[version]固定,条目[Add.Code]将需要下载的动态链接库和ActiveX 组件填写其中作为下载清单,其他以[Add.Code]中的文件名为条目名的表项是对这些文件的来源、版本、下载路径和是否需客户端系统注册的具体说明--关键字"file-win32-x86"指定平台是x86,其值"thiscab"也是一个关键字,意指包含该INF的CAB文件,也可以是其他同时被下载的cab文件名或者是一个网址;"clsid"是指待注册控件的CLSID;"RegisterServer=yes"表示对应文件需要系统注册;"hook"表示该文件位置要去hook语句所指示的条目里寻找;
(2) 运行公用程序CABARC.EXE,对应于以上INF文件有如下命令行:
CABARC -s 6144 n texturemap.cab cards.ocx mfc42.dll texture.inf |
执行后创建了一个名为texturemap.cab的CAB文件。其中,CAB包中的文件需要在命令行列出,次序同它们在INF文件中的完全一致,-s选项为代码签署保留空间,n 命令指定创建的是CAB文件。
2.3 对打包得到的文件进行数字签名:
使用CAB&SIGN目录下的SIGNCODE.EXE,步骤如下:
(1) 运行该程序,在需填写属性的第一页,选择打包好的文件(也可以直接是ActiveX控件所对应的文件,如OCX/DLL),填写发布软件名和发布商的网址(方便用户根据这些资料直观的判断是否运行该控件);
(2) 第二页是证书发放机构的列表,选择软件发布商所获得证书的所属机构;
(3) 第三个用户填写页,选定软件开发商证书(SPC)文件名,另外,因为需在该证书的一个文件中查找密码、密匙,所以还需选定私人密匙(PVK)文件名;
(4) 确认所填写的信息后,SIGNCODE就对文件进行签署。