一、ActiveX发布步骤
1、单击"开始"-->"运行(R)"-->输入"cmd"-->回车-->进入到操作的控件所在的目录;
2、创建PVK文件(私人密匙文件),在命令行中输入"makecert -sk demo demo.pvk -n CN=XXXXXXX公司",然后回车;
3、创建CER文件(公司证书),在命令行中输入"makecert -sk demo.pvk demo.cer",然后回车,如图8所示,若出现"Successed"提示,则会在E:/ demo目录下生成demo.cer文件;
4、创建SPC测试软件出版商证明书,在命令行中输入"cert2spc demo.cer demo.spc",然后回车;
5、创建INF文件,用记录本编辑以下信息:
[xhtml] view plaincopyprint?
- [version]
- signature="$CHINA$"
- AdvancedINF=2.0
- [Add.Code]
- Polygon.dll=Polygon.dll
- atl90.dll=atl90.dll
- [atl90.dll]
- file-win32-x86=thiscab
- //告诉ie到哪里去得到这个dll,file一共包括三个部分,第一部分是file,这个永远都是这样的(至少目前来说);第二部分告诉声明支持的OS,win32表示windows,mac就是苹果MAC OX了;第三部分是CPU类型,比如说x86、 ppc (Power PC)、 mips或者alpha了
- //其中“thiscab”是一个关键字,表示 CAB 包含此 DLL,也可通过指定一条绝对或相对路径,从一个 HTTP 位置下载所需的 DLL,
- 例如: file-win32-x86=http://www.mysite.com/mydir/NEEDED.DLL
- FileVersion=9,00,30729,01
- //说明了atl90.dll的版本号
- DestDir=11
- //它的值是dll将要存到本地硬盘的位置,如果它的值是10,则将dll放到/Windows或者/WinNT下;如果是11,则放到/Windows/System或者/WinNT/System32下;如果未指定任何 DestDir(典型情况),则代码安装在固定的 OCCACHE 目录中。
- RegisterServer=yes
- [Polygon.dll]
- file-win32-x86=thiscab
- clsid={2885EE05-A26B-11D1-B49B-00C04F98EFE0}
- //“clsid”是将要安装的控件的 CLSID
- FileVersion=1,0,0,1
- RegisterServer=yes
[version]
signature="$CHINA$"
AdvancedINF=2.0
[Add.Code]
Polygon.dll=Polygon.dll
atl90.dll=atl90.dll
[atl90.dll]
file-win32-x86=thiscab
//告诉ie到哪里去得到这个dll,file一共包括三个部分,第一部分是file,这个永远都是这样的(至少目前来说);第二部分告诉声明支持的OS,win32表示windows,mac就是苹果MAC OX了;第三部分是CPU类型,比如说x86、 ppc (Power PC)、 mips或者alpha了
//其中“thiscab”是一个关键字,表示 CAB 包含此 DLL,也可通过指定一条绝对或相对路径,从一个 HTTP 位置下载所需的 DLL,
例如: file-win32-x86=http://www.mysite.com/mydir/NEEDED.DLL
FileVersion=9,00,30729,01
//说明了atl90.dll的版本号
DestDir=11
//它的值是dll将要存到本地硬盘的位置,如果它的值是10,则将dll放到/Windows或者/WinNT下;如果是11,则放到/Windows/System或者/WinNT/System32下;如果未指定任何 DestDir(典型情况),则代码安装在固定的 OCCACHE 目录中。
RegisterServer=yes
[Polygon.dll]
file-win32-x86=thiscab
clsid={2885EE05-A26B-11D1-B49B-00C04F98EFE0}
//“clsid”是将要安装的控件的 CLSID
FileVersion=1,0,0,1
RegisterServer=yes
6、创建CAB文件,在命令行中输入"cabarc -s 6144 n demo.cab atl90.dll Polygon.dll demo.inf",-s 选项表示在压缩文件中保留用于代码签名的空间,n命令指定希望创建 CAB 文件,然后回车;
7、使用Code Signing Wizard签署一个CAB文件,首先双击运行工具集里面的signcode.exe(或在命令行里直接输入"signcode"后回车);
8、单击"下一步(N)"按钮,选择要进行数字签名的且已做成CAB包的文件demo.cab文件;
9、选择好CAB包后单击"下一步(N)"按钮,在选择想要的签名类型里选择"自定议(C)"并单击"下一步(N)"按钮;
10、接下来单击"从文件选择(F)"按钮,选择刚刚制作的demo.cer;
11、在图20中单击"下一步(N)",然后选择"CSP中的私钥(K)";
13、在"证书路径中的证书"中选择"证书路径中的所有证书,包括根证书(C)",在"其它证书(可选)"中选择"包括在以下PKCS #7 证书(.p7b)文件中的证书(P):",并单击"浏览(R)..."按钮选择demo.spc文件,选择完后单击"下一步(N)"按钮;
14、接下来在弹出的"数据描述"窗口中输入公司的名称和网址并单击"下一步(N)"按钮;
15、现大部份工作都已完成,在接下来的一步当中是可选的操作,其作用只是为CAB加入时间戳,此步骤完全可以不做,VeriSign: http://timestamp.verisign.com/scripts/timstamp.dll;
16、完成,在图25中单击"下一步(N)"按钮便可来到数字签名向导的最后一步,即操作总览,如图26所示,单击"完成"按钮便可大功告成;
17、创建*.htm文件在web页上嵌套入签名的CAB文件:
[xhtml] view plaincopyprint?
- <BODY>
- <OBJECT
- ID="PolyCtl"
- CLASSID="CLSID:4CBBC676-507F-11D0-B98B-000000000000"
- CODEBASE="http://example.sq-soft.com/mydir/myctl.cab#version=1,0,0,1"
- width=400
- height=335>
- </OBJECT>
- </BODY>
- CODEBASE 也可以直接指向 OCX 或 DLL 文件,如:
- CODEBASE="http://example.sq-soft.com/mydir/myctl.dll#version=1,0,0,1"
- 另自动控制可变宽高:
- <object
- ID="MyGl"
- classid="CLSID:42139A2D-5DA6-42C3-A9E8-E289A5C6E5BE"
- width=400
- height=335>
- </object>
- <br>
- <input id=w value=400 onblur=MyGl.width=parseInt(this.value)>
- <input id=h value=335 onblur=MyGl.height=parseInt(this.value)>
- <input type=button value=go onclick=MyGl.width=parseInt(w.value)>
<BODY>
<OBJECT
ID="PolyCtl"
CLASSID="CLSID:4CBBC676-507F-11D0-B98B-000000000000"
CODEBASE="http://example.sq-soft.com/mydir/myctl.cab#version=1,0,0,1"
width=400
height=335>
</OBJECT>
</BODY>
CODEBASE 也可以直接指向 OCX 或 DLL 文件,如:
CODEBASE="http://example.sq-soft.com/mydir/myctl.dll#version=1,0,0,1"
另自动控制可变宽高:
<object
ID="MyGl"
classid="CLSID:42139A2D-5DA6-42C3-A9E8-E289A5C6E5BE"
width=400
height=335>
</object>
<br>
<input id=w value=400 onblur=MyGl.width=parseInt(this.value)>
<input id=h value=335 onblur=MyGl.height=parseInt(this.value)>
<input type=button value=go onclick=MyGl.width=parseInt(w.value)>
regsvr32 netshare.ocx 注册netshare.ocx控件
regsvr32 /u netshare.ocx 解除netshare.ocx控件的注册
http://blog.csdn.net/kamaliang/article/details/3894084