第一次发布一个activeX控件,真的费了不少力气,主要是对发布的原理和过程不大清楚。在这里记下过程,以备后用和其它网友参考。
1,创建OCX:你要创建一个可用的OCX控件,并在本机测试通过。
2,打包CAB:WinCAB 是一种可视化的全新的CAB压缩包制作软件,它具有采用图形界面、支持分卷压缩、可制作具有自解包功能的CAB压缩包(*.EXE文件格式)等优秀功能, 这就从根本上解决了CAB压缩包的制作问题。需要注意的是在运行WinCAB.exe时,必须确保makecab.exe文件也在相同的目录下。
注:WinCAB在网上有很多下载,可以去百度搜,makecab.exe在系统盘windows\system32下。
一般来说,一个单独的OCX不需要INF也可以打成CAB发布,所以这里就不介绍INF文件了,想了解的话,去我文章下边的几个链接。
3,数字签名:做为测试,也可以不要数字签名。只需要在客户端PC的IE安全选项中,把级别调低或针对ACTIVEX设置调成enable。
关于证书和签名 -|zuiwanting 发表于 2006-5-24 9:58:00
\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin下有关于证书和签名相关工具
1。Makecert.exe ---证书创建工具
2。Cert2Spc.exe ---发行者证书测试工具
3。Signcode.exe ---文件签名工具
建立自己的根证书:
makecert -sk myPK -ss myName -n "CN=LUO31工作室" -r c:\luo31.cer
sk-表示主题的密钥容器位置,ss-主题的证书存储名称, n-证书颁发对象,r-证书存储位置;
如果你需要导出私钥文件,请不要使用sk,而换作s,eg:makecert -ss myName -n "CN=LUO31工作室" -sv c:\luo31.pvk -r c:\luo31.cer
建立自根证书授权的子证书:
makecert -sk "myPK" -is myName -n "CN=luo31" -$ commercial -ic c:\luo31.cer c:\31.cer
sk-表示主题的密钥容器位置,is-颁发者的证书存储名称, n-证书颁发对象,ic-颁发者的证书存储位置,-$-授权范围(用于代码签名);
使用Cert2Spc生成spc发行者证书(可选):
cert2spc c:\31.cer c:\31.spc
使用signcode为你的程序,库或cab包签名:
双 击signcode,或在控制台键入signcode,不带参数会启动签名向导。在第三步选择“自定义选项”,第四步选择“从文件选择”选择31.spc 或31.cer,第五步选择“CSP中的私钥”,在密钥容器中选择我们定义的myPK,其他步骤默认即可,如果想添加时间戳,请在时间戳服务器地址上键 入:(免费时间戳认证)http://timestamp.verisign.com/scripts/timstamp.dll ;
完成后,观察你所签名的文件属性,应该已经添加数字签名项
注:如无Signcode.exe工具。也可使用signtool.exe这个工具从命令行启动,支持界面向导。也在Bin目录下。
4,HTTP部署:你需要一个HTTPSERVER,IIS或apache都可以。这个是另一大块,关于这部分,我默认为你已有一个HTTPSERVER。(如果真的没有,那以这一块为单位你可以在网上找到很多方法)。
5,网页发布代码:
<html>
<head>
<title>test</title>
</head>
<body>
<object name=axSAM classid=clsid:76D15F20-BE2A-4FEF-A215-FDF91B82CFAD style="height:18pt;width:120" codebase="http://192.168.11.212/airis/VirusCheck.cab#version=1, 0, 0, 3"></object>
<input name="Check Begin" value="Check Begin" type="button" onclick="axSAM.Check('192.168.11.212');" />
</body>
</html>
codebase 是你的cab的URL,#后面是版本。版本变化的时候IE才会更新OCX。axSAM.Check('192.168.11.212')
是我的自定义函数,用以测试。
6,客户端PC的IE设定:在客户端PC的IE安全选项中,把级别调低或针对ACTIVEX设置调成enable。这样的结果会是有的PC可以使用控件,有的不行。原因是WindowsXP SP2和IE7增强了对ActiveX的限制。
症状:
无法在某些XP SP2 的IE上显示控件(实际上控件已经注册成功了)
结果:
上网搜索后,有微 软关于XP SP2的说明,说是SP2补丁导致很多控件的无法正常的使用,提供了一个办法,将访问服务器的站点添加到“受信任的站点”(IE的“Internet选项 ”中,注意不要选择“对改区域内的所有站点都要求验证(https://)”),这时某些有问题的SP2机器上显示出来。
疑问猜想:
1。有些机器可以显示,有些不能显示,这可能和系统的某些未知补丁有关系
2。花钱注册了控件签名是否能够解决这一问题
3。在有的(只有一台,正版XP sp2, 经常升级补丁),使用regsvr32 来注册OCX都不可以?
引用MVP的话:
jiangsheng(蒋晟.Net[MVP]) ( ) 信誉:290
2006-4-4 14:28:23
得分: 0
记 得WinXPSp2里面ActievX的限制更加严格,没有数字签名的控件会被禁用。对实现了IObjectSafety的控件也会有警告参考 http://verisign.com/products-services/security-services/code-signing/digital-ids-code-signing/index.html
7,小技巧:去注册表中。开始菜单=》运行=》regedit 。在HKEY_CLASSES_ROOT下搜索你的OCX的名字,可以得到以OCX的CLSID为键名的键。在客户端PC上以有这样的注册表信息为注册成功。一般注册成功的OCX被下载到系统盘目录:\WINDOWS\Downloaded Program Files下。
以上内容参考自:
http://dev.csdn.net/develop/article/65/65477.shtm
http://blog.csdn.net/birdme007/archive/2007/09/14/1784804.aspx
http://blog.csdn.net/MLiang/category/184234.aspx
注:以上灰色部分为引用部分,绿色部分为特别注意部分。