第一次發布一個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
注:以上灰色部分為引用部分,綠色部分為特別注意部分。