如何发布ActiveX 控件
轉(zhuǎn)自:http://blog.csdn.net/zougangx/archive/2008/07/30/2738147.aspx
?
[背景]
?????? 做過ActiveX控件的朋友都知道,要想把自己做的ActiveX控件功能放在自己的網(wǎng)頁上使用,那么用戶在客戶端就必須進(jìn)行本地的注冊,也就是說用戶得首先要把該ActiveX控件(test.ocx)放在本機(jī)的%system%/system32下,然后運(yùn)行DOS工具里面運(yùn)行regsvr32 test.ocx命令進(jìn)行注冊。但如果真是這么去做的話,那么代表著你處于危險之中了,因為您是通過讓用戶自己去部署設(shè)置環(huán)境來達(dá)到你的目的,這就失去軟件項目本身所存在的價值。那么面對這種情況,我們應(yīng)該如何解決呢?聰明的你一定會很快就想到,我們可以使用戶在客戶端自動下載安裝該ActiveX控件,這樣一來即可以實現(xiàn)我們所想要的功能,又不需要用戶自己去部署設(shè)置環(huán)境,這豈不是一舉兩得。
[必備條件]
一、用于將ActiveX控件進(jìn)行打包并加數(shù)據(jù)鑒名的工具集:
makecert.exe 制作cer格式的證書,即X.509證書,同時可以創(chuàng)建私鑰和公鑰。
cert2spc.exe? 將cer格式證書轉(zhuǎn)換成spc格式證書,即PKCS #7證書。
cabarc.exe?? 將ocx打包成cab。
signcode.exe 將證書簽署到ocx上去。
chktrust.exe? 檢查簽署證書后的ocx是否正確。
certmgr.exe? 是管理證書用的。
二、用于進(jìn)行打包用的ocx控件evS1300.ocx。
三、用于查看ocx控件的工具ActvxDoc。
?
[制作過程]
一、環(huán)境設(shè)置
1、下載makeCAB包,解壓到本地目錄(如E盤根目錄),如查看到如圖1所示的工具集,則表示已下載成功:
(圖1:makeCAB包的工具集)
?
2、設(shè)置系統(tǒng)環(huán)境變量,右鍵單擊“我的電腦”à選擇“屬性”à選擇“高級”選項卡,打開如圖2所示的系統(tǒng)屬性面版塊:
(圖2:系統(tǒng)屬性版塊)
?3、在系統(tǒng)屬性版塊里單擊“環(huán)境變量(N)”按鈕,打開圖3:
(圖3:系統(tǒng)變量)
?????? 4、選擇“系統(tǒng)變量(S)”里的“新建(W)”按鈕,打開“編輯系統(tǒng)變量”對話框,如圖4所示,然后在“變量值(V)”里加入“;E/makeCAB”:
?
?
(圖4:編輯系統(tǒng)變量)
?
二、將用于打包的OCX控件放在E盤根目錄下(本文檔使用名為evS1300.ocx的控件來進(jìn)行介紹),如圖5所示,其中evS1300.ocx是本文檔進(jìn)行操作的控件對象,而mfc71.dll、msvcp71.dll、msvcr71.dll這三個文件通常是進(jìn)行打包時一并打包的文件,但不是必須(推薦一起打包),其可在系統(tǒng)中的system32目錄下找
到,請自行準(zhǔn)備。
(圖5;用于操作的OCX控件路徑)
三、ActiveX發(fā)布步驟
1、單擊“開始”à“動行(R)”à輸入“cmd”à回車à進(jìn)入到操作的控件所在的目錄,如圖6所示:
?
(圖6:進(jìn)入E:/evS1300目錄)
?
2、創(chuàng)建PVK文件(私人密匙文件),在命令行中輸入“makecert -sk evS1300 evS1300.pvk -n CN=XXXXXXX公司”,然后回車,如圖7所示:
(圖7:創(chuàng)建PVK文件)
???? 3、創(chuàng)建CER文件(公司證書),在命令行中輸入“makecert -sk evS1300.pvk evS1300.cer”,然后回車,如圖8所示,若出現(xiàn)“Successed”提示,則會在E:/evS1300目錄下生成evS1300.cer文件,如圖9所示:
(圖8:創(chuàng)建CER文件)
(圖9:生成evS1300.cer)
???? 4、創(chuàng)建SPC測試軟件出版商證明書,在命令行中輸入“cert2spc evS1300.cer evS1300.spc”,然后回車,如圖10所示:
?
?
?
(圖10:創(chuàng)建SPC測試軟件出版商證明書)
?
?????? 5、創(chuàng)建INF文件,用記錄本編輯以下信息
[version]???
signature="$CHINA$"??
AdvancedINF=1.0??
??
[Add.Code]???
evS1300.ocx=evS1300.ocx???
msvcr71.dll=msvcr71.dll???
mfc71.dll=mfc71.dll???
msvcp71.dll=msvcp71.dll???
??
[evS1300.ocx]???
file=thiscab???
clsid={0440906E-9BD6-4F3E-B65A-39E1B339D9DA}???
FileVersion=1,0,0,0??
RegisterServer=yes???
??
[msvcr71.dll]???
file-win32-x86=thiscab???
RegisterServer=no???
DestDir=11??
FileVersion=7,10,3052,4??
??
[mfc71.dll]???
file-win32-x86=thiscab???
RegisterServer=no???
DestDir=11??
FileVersion=7,10,3077,0??
??
[msvcp71.dll]???
file-win32-x86=thiscab???
RegisterServer=no???
DestDir=11??
FileVersion=7,10,3077,0??
?
???? 如圖11所示,并保存為E:/evS1300/evS1300.inf,如圖12所示
(圖11:evS1300.inf)
?
(圖12:保存evS1300.inf)
?????? 在evS1300.inf的內(nèi)容里,[version]和[Add.Code]項是必須的,[Add.Code]的鍵值項的多少取決于以下你所配制項的多少。[msvcr71.dll]、[mfc71.dll]、[msvcp71.dll]就是上面我所說不是必須的項,只要你想把msvcr71.dll、mfc71.dll、msvcp71.dll包括在發(fā)布包里,那這么三項就必須寫在inf里,而這三項的具體內(nèi)容是固定的,可復(fù)制過去即可。最為關(guān)鍵的就是[evS1300.ocx]項,其中有clsid和FileVersion就是evS1300.ocx的classId和version,這要求必須一至,否我們發(fā)布出去的CAB包時不能在客戶端自動更新下載安裝。說到這里,那我們?nèi)绾尾拍苤纄vS1300.ocx里面的classId和version呢?我在上面的必備條件里介紹到有一個用于查看ocx控件的工具ActvxDoc,對,就是用它,我們雙擊這個文件運(yùn)行它,此時可以看到圖13所示的界面:?
?
?
(圖13:ActiveX Documenter)
在圖13的界面里,點擊“File”à“Open…”,打開您所要查看的OCX控件,如圖14所示:
?
?(圖14:打開控件)
打開了控件之后,我們在界面的右邊部位“Class”的下拉框里選擇“<all interfaces=""></all>”就可以看到我們想要查找的FileVersion和classId,如圖15所示:
?(圖15:控件屬性)
?????? 6、創(chuàng)建CAB文件,在命令行中輸入“cabarc -s 6144 n evS1300.cab msvcr71.dll mfc71.dll msvcp71.dll evS1300.ocx evS1300.inf”,然后回車,如圖16所示:
? ?
?
(圖16:創(chuàng)建CAB文件)
?????? 7、使用Code Signing Wizard簽署一個CAB文件,首先雙擊運(yùn)行工具集里面的signcode.exe(或在命令行里直接輸入“signcode”后回車),系統(tǒng)會彈出如圖17所示的數(shù)字簽名向?qū)?#xff1a;
?
?
(圖17:數(shù)字簽名向?qū)?#xff09;
? 8、單擊“下一步(N)”按鈕,來到圖18所示,選擇要進(jìn)行數(shù)字簽名的且已做成CAB包的文件evS1300.cab文件。
(圖18:選擇CAB包)
?makeCAB.rar (188.5 KB)
9、選擇好CAB包后單擊“下一步(N)”按鈕,在選擇想要的簽名類型里選擇“自定議(C)”并單擊“下一步(N)”按鈕,如圖19所示:
(圖19:選擇簽名類型)
?????? 10、接下來單擊“從文件選擇(F)”按鈕,選擇剛剛制作的evS1300.cer,如圖20所示:
(圖20:選擇CER證書)
?????? 11、在圖20中單擊“下一步(N)”按鈕來到圖21,然后在圖21里選擇“CSP中的私鑰(K)”。
?
?
(圖21:選擇私鑰的位置)
?????? 12、在圖21中單擊“下一步(N)”按鈕,然后在圖22中的散列算法中選擇“shal”,并單擊“下一步(N)”按鈕。
(圖22:選擇散列算法)
?????? 13、在“證書路徑中的證書”中選擇“證書路徑中的所有證書,包括根證書(C)”,在“其它證書(可選)”中選擇“包括在以下PKCS #7 證書(.p7b)文件中的證書(P):”,并單擊“瀏覽(R)…”按鈕選擇evS1300.spc文件,選擇完后單擊“下一步(N)”按鈕,如圖23所示:
(圖23:選擇其它證書)
?????? 14、接下來在彈出的“數(shù)據(jù)描述”窗口中輸入公司的名稱和網(wǎng)址并單擊“下一步(N)”按鈕,如圖24所示:
(圖24:輸入數(shù)據(jù)描述)
?????? 15、現(xiàn)大部份工作都已完成,在接下來的一步當(dāng)中是可選的操作,其作用只是為CAB加入時間戳,此步驟完全可以不做,如圖25所示:
(這里我提拱三個免費(fèi)的代碼簽名時間戳地址)
VeriSign:? http://timestamp.verisign.com/scripts/timstamp.dll
Comodo:? http://timestamp.comodoca.com/authenticode
GeoTrust/TrustCenter: http://www.trustcenter.de/codesigning/timestamp
(圖25:給數(shù)據(jù)蓋時間戳)
?????? 16、完成,在圖25中單擊“下一步(N)”按鈕便可來到數(shù)字簽名向?qū)У淖詈笠徊?#xff0c;即操作總覽,如圖26所示,單擊“完成”按鈕便可大功告成,如圖27所示:
?
?
(圖26,完成操作總覽)
?
(圖27:簽名成功提示)
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的如何发布ActiveX 控件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV常遇问题解决方法汇总
- 下一篇: Activex、OLE、COM、OCX、