做inf文件
建一个default.INF文件,写库的依赖,要做的事情。例子如下:
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
ActiveX.ocx=ActiveX.ocx
a.dll=a.dll
b.dll=b.dll
[ActiveX.ocx]
file-win32-x86=thiscab
clsid={BF31EF92-1CFF-428A-AC60-28E065AF5E12}
FileVersion=1,0,0,1
RegisterServer=yes
DestDir=11
[a.dll]
file-win32-x86=thiscab
DestDir=11
[b.dll]
file-win32-x86=thiscab
DestDir=11
[RegisterFiles]
%11%\ActiveX.ocx
脚本解释如下:
[version]
内容为固定。
[Add.Code]
,前面是要下载的文件名,后面是对应这个文件的区域名,可以是任何名字,不过一般都是和文件的名字相同,这样方便维护。
[ActiveX.ocx]
区域中的第一个file值告诉ie到哪里去得到这个ocx,file一共包括三个部分,第一部分是file,这个永远都是这样的;第二部分告诉声明支持的OS,win32表示windows,mac就是苹果MAC OX了;第三部分是CPU类型,比如说x86、mips等,file的值可以取三个:一个URL、ignore和thiscab,如果是URL则说明到URL所在的位置去下;如果是ignore说明对于这种OS和CPU,不需要下载这个文件;如果是thiscab就在当前的cab文件中了。
接下来是clsid,需要填写该ocx的class guid。
接下来是FileVersion,说明了ocx的版本号。
接下来是RegisterServer,可以取两个值yes和no,如果为yes则说明ie要注册该ocx,如果是no就不必了;
再下来是DestDir,它的值是ocx将要存到本地硬盘的位置,如果它的值是10,则将ocx放到\Windows或者\WinNT下;如果是11,则放到\Windows\System或者 \WinNT\System32下;如果是空(就是没有值)则会放到\Windows或者\WinNT下的Downloaded Program Files目录下;
[a.dll]
参见[ActiveX.ocx]的解释,这里不需要clsid。
做CAB文件
打开windows/system下的iexpress.exe,点“创建新的自解压缩指导文件”,“下一步”,点“仅创建压缩文件(ActiveX安装)”,“下一步”,点“添加”,选在需要打包的OCX,DLL,INF文件,“下一步”,点“浏览”,为CA起个名字,如“X.CAB”,选中第二个“在软件包...”,“下一步”,点“不保存”,点“下一步”,直到“完成”。
制作签名文件
1》制作数字证书,在VC安装目录下找makecert.exe,在命令行下执行
makecert -ss name -n “CN=公司名” -sv d:\pos.pvk -r d:\pos.cer
makecert.exe有很多命令参数,这句话的解释如下:
sk-表示主题的密钥容器位置,
ss-主题的证书存储名称,
n-证书颁发对象,
r-证书存储位置,
-sv 导出私钥文件(为了数字签名使用)。
注意:这个时候会让输入三次密码,三次要完全一致。
2》使用Cert2Spc生成spc发行者证书:cert2spc d:\pos.cer d:\pos.spc
对CAB文件进行签名
3》在VC安装目录下找signcode.exe(下载地址:http://download.csdn.net/detail/evsqiezi/7839857),双击运行。
先选择要签名文件,下一步,选择“自定义”, 下一步,选择“从文件选择”,添加刚生成的pos.spc证书,下一步,选择刚生成的私钥pos.pvk,再下一步, 输入密码,下一步任选一个加密算法,在“数字签名先导页面”保持默认,再一直下一步。添加时间戳,在时间戳填入http://timestamp.verisign.com/scripts/timstamp.dll,再下一步完成。
这样就对CAB文件进行了签名,但是这个时候点击这个文件会发现证书不可用,原因是证书没有安装。
文件属性->数字证书->详细信息-〉查看证书-〉安装证书,进入安装证书向导,存放区域选择“受信任的根证书颁发机构”,点击完成即可。
导入证书
接下来,我们需要把数字证书(cer文件)安装到根系统存储区,“运行”执行如下命令: xxx\certmgr -add -c printocx.cer -s root
会有一个提示对话框,点确定即可。
前面所说的所有内容,都是基于买不起付费数字证书的基础上,如果你们公司愿意买数字证书的话,那是最好不过的,否则只能用这样的笨办法给用户最简单的体验。当然,也可以让用户修改IE设置和安全级别的话。