第一次發(fā)布一個(gè)activeX控件,真的費(fèi)了不少力氣,主要是對(duì)發(fā)布的原理和過程不大清楚。在這里記下過程,以備后用和其它網(wǎng)友參考。
1,創(chuàng)建OCX:你要?jiǎng)?chuàng)建一個(gè)可用的OCX控件,并在本機(jī)測(cè)試通過。
2,打包CAB:WinCAB 是一種可視化的全新的CAB壓縮包制作軟件,它具有采用圖形界面、支持分卷壓縮、可制作具有自解包功能的CAB壓縮包(*.EXE文件格式)等優(yōu)秀功能, 這就從根本上解決了CAB壓縮包的制作問題。需要注意的是在運(yùn)行WinCAB.exe時(shí),必須確保makecab.exe文件也在相同的目錄下。
注:WinCAB在網(wǎng)上有很多下載,可以去百度搜,makecab.exe在系統(tǒng)盤windows\system32下。
一般來說,一個(gè)單獨(dú)的OCX不需要INF也可以打成CAB發(fā)布,所以這里就不介紹INF文件了,想了解的話,去我文章下邊的幾個(gè)鏈接。
3,數(shù)字簽名:做為測(cè)試,也可以不要數(shù)字簽名。只需要在客戶端PC的IE安全選項(xiàng)中,把級(jí)別調(diào)低或針對(duì)ACTIVEX設(shè)置調(diào)成enable。
關(guān)于證書和簽名 -|zuiwanting 發(fā)表于 2006-5-24 9:58:00
\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin下有關(guān)于證書和簽名相關(guān)工具
1。Makecert.exe ---證書創(chuàng)建工具
2。Cert2Spc.exe ---發(fā)行者證書測(cè)試工具
3。Signcode.exe ---文件簽名工具
建立自己的根證書:
makecert -sk myPK -ss myName -n "CN=LUO31工作室" -r c:\luo31.cer
sk-表示主題的密鑰容器位置,ss-主題的證書存儲(chǔ)名稱, n-證書頒發(fā)對(duì)象,r-證書存儲(chǔ)位置;
如果你需要導(dǎo)出私鑰文件,請(qǐng)不要使用sk,而換作s,eg:makecert -ss myName -n "CN=LUO31工作室" -sv c:\luo31.pvk -r c:\luo31.cer
建立自根證書授權(quán)的子證書:
makecert -sk "myPK" -is myName -n "CN=luo31" -$ commercial -ic c:\luo31.cer c:\31.cer
sk-表示主題的密鑰容器位置,is-頒發(fā)者的證書存儲(chǔ)名稱, n-證書頒發(fā)對(duì)象,ic-頒發(fā)者的證書存儲(chǔ)位置,-$-授權(quán)范圍(用于代碼簽名);
使用Cert2Spc生成spc發(fā)行者證書(可選):
cert2spc c:\31.cer c:\31.spc
使用signcode為你的程序,庫(kù)或cab包簽名:
雙 擊signcode,或在控制臺(tái)鍵入signcode,不帶參數(shù)會(huì)啟動(dòng)簽名向?qū)АT诘谌竭x擇“自定義選項(xiàng)”,第四步選擇“從文件選擇”選擇31.spc 或31.cer,第五步選擇“CSP中的私鑰”,在密鑰容器中選擇我們定義的myPK,其他步驟默認(rèn)即可,如果想添加時(shí)間戳,請(qǐng)?jiān)跁r(shí)間戳服務(wù)器地址上鍵 入:(免費(fèi)時(shí)間戳認(rèn)證)http://timestamp.verisign.com/scripts/timstamp.dll ;
完成后,觀察你所簽名的文件屬性,應(yīng)該已經(jīng)添加數(shù)字簽名項(xiàng)
注:如無Signcode.exe工具。也可使用signtool.exe這個(gè)工具從命令行啟動(dòng),支持界面向?qū)АR苍贐in目錄下。
4,HTTP部署:你需要一個(gè)HTTPSERVER,IIS或apache都可以。這個(gè)是另一大塊,關(guān)于這部分,我默認(rèn)為你已有一個(gè)HTTPSERVER。(如果真的沒有,那以這一塊為單位你可以在網(wǎng)上找到很多方法)。
5,網(wǎng)頁(yè)發(fā)布代碼:
<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,#后面是版本。版本變化的時(shí)候IE才會(huì)更新OCX。axSAM.Check('192.168.11.212')
是我的自定義函數(shù),用以測(cè)試。
6,客戶端PC的IE設(shè)定:在客戶端PC的IE安全選項(xiàng)中,把級(jí)別調(diào)低或針對(duì)ACTIVEX設(shè)置調(diào)成enable。這樣的結(jié)果會(huì)是有的PC可以使用控件,有的不行。原因是WindowsXP SP2和IE7增強(qiáng)了對(duì)ActiveX的限制。
癥狀:
無法在某些XP SP2 的IE上顯示控件(實(shí)際上控件已經(jīng)注冊(cè)成功了)
結(jié)果:
上網(wǎng)搜索后,有微 軟關(guān)于XP SP2的說明,說是SP2補(bǔ)丁導(dǎo)致很多控件的無法正常的使用,提供了一個(gè)辦法,將訪問服務(wù)器的站點(diǎn)添加到“受信任的站點(diǎn)”(IE的“Internet選項(xiàng) ”中,注意不要選擇“對(duì)改區(qū)域內(nèi)的所有站點(diǎn)都要求驗(yàn)證(https://)”),這時(shí)某些有問題的SP2機(jī)器上顯示出來。
疑問猜想:
1。有些機(jī)器可以顯示,有些不能顯示,這可能和系統(tǒng)的某些未知補(bǔ)丁有關(guān)系
2。花錢注冊(cè)了控件簽名是否能夠解決這一問題
3。在有的(只有一臺(tái),正版XP sp2, 經(jīng)常升級(jí)補(bǔ)丁),使用regsvr32 來注冊(cè)O(shè)CX都不可以?
引用MVP的話:
jiangsheng(蔣晟.Net[MVP]) (
) 信譽(yù):290
2006-4-4 14:28:23
得分: 0
記 得WinXPSp2里面ActievX的限制更加嚴(yán)格,沒有數(shù)字簽名的控件會(huì)被禁用。對(duì)實(shí)現(xiàn)了IObjectSafety的控件也會(huì)有警告參考 http://verisign.com/products-services/security-services/code-signing/digital-ids-code-signing/index.html
7,小技巧:去注冊(cè)表中。開始菜單=》運(yùn)行=》regedit 。在HKEY_CLASSES_ROOT下搜索你的OCX的名字,可以得到以O(shè)CX的CLSID為鍵名的鍵。在客戶端PC上以有這樣的注冊(cè)表信息為注冊(cè)成功。一般注冊(cè)成功的OCX被下載到系統(tǒng)盤目錄:\WINDOWS\Downloaded Program Files下。
以上內(nèi)容參考自:
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
注:以上灰色部分為引用部分,綠色部分為特別注意部分。