[背景] 做過(guò)ActiveX控件的朋友都知道,要想把自己做的ActiveX控件功能放在自己的網(wǎng)頁(yè)上使用,那么用戶在客戶端就必須進(jìn)行本地的注冊(cè),也就是說(shuō)用戶得首先要把該ActiveX控件(test.ocx)放在本機(jī)的%system%/system32下,然后運(yùn)行DOS工具里面運(yùn)行regsvr32 test.ocx命令進(jìn)行注冊(cè)。但如果真是這么去做的話,那么代表著你處于危險(xiǎn)之中了,因?yàn)槟峭ㄟ^(guò)讓用戶自己去部署設(shè)置環(huán)境來(lái)達(dá)到你的目的,這就失去軟件項(xiàng)目本身所存在的價(jià)值。那么面對(duì)這種情況,我們應(yīng)該如何解決呢?聰明的你一定會(huì)很快就想到,我們可以使用戶在客戶端自動(dòng)下載安裝該ActiveX控件,這樣一來(lái)即可以實(shí)現(xiàn)我們所想要的功能,又不需要用戶自己去部署設(shè)置環(huán)境,這豈不是一舉兩得。
[必備條件] 一、用于將ActiveX控件進(jìn)行打包并加數(shù)據(jù)鑒名的工具集: makecert.exe 制作cer格式的證書(shū),即X.509證書(shū),同時(shí)可以創(chuàng)建私鑰和公鑰。 cert2spc.exe 將cer格式證書(shū)轉(zhuǎn)換成spc格式證書(shū),即PKCS #7證書(shū)。 cabarc.exe 將ocx打包成cab。 signcode.exe 將證書(shū)簽署到ocx上去。 chktrust.exe 檢查簽署證書(shū)后的ocx是否正確。 certmgr.exe 是管理證書(shū)用的。 二、用于進(jìn)行打包用的ocx控件evS1300.ocx。 三、用于查看ocx控件的工具ActvxDoc。
[制作過(guò)程] 一、環(huán)境設(shè)置
1、下載makeCAB包,解壓到本地目錄(如E盤(pán)根目錄),如查看到如圖1所示的工具集,則表示已下載成功:
(圖1:makeCAB包的工具集)
2、設(shè)置系統(tǒng)環(huán)境變量,右鍵單擊“我的電腦”à選擇“屬性”à選擇“高級(jí)”選項(xiàng)卡,打開(kāi)如圖2所示的系統(tǒng)屬性面版塊:
(圖2:系統(tǒng)屬性版塊)
3、在系統(tǒng)屬性版塊里單擊“環(huán)境變量(N)”按鈕,打開(kāi)圖3:
(圖3:系統(tǒng)變量)
4、選擇“系統(tǒng)變量(S)”里的“新建(W)”按鈕,打開(kāi)“編輯系統(tǒng)變量”對(duì)話框,如圖4所示,然后在“變量值(V)”里加入“;E/makeCAB”:
(圖4:編輯系統(tǒng)變量)
二、將用于打包的OCX控件放在E盤(pán)根目錄下(本文檔使用名為evS1300.ocx的控件來(lái)進(jìn)行介紹),如圖5所示,其中evS1300.ocx是本文檔進(jìn)行操作的控件對(duì)象,而mfc71.dll、msvcp71.dll、msvcr71.dll這三個(gè)文件通常是進(jìn)行打包時(shí)一并打包的文件,但不是必須(推薦一起打包),其可在系統(tǒng)中的system32目錄下找 到,請(qǐng)自行準(zhǔn)備。
(圖5;用于操作的OCX控件路徑) 三、ActiveX發(fā)布步驟 1、單擊“開(kāi)始”à“動(dòng)行(R)”à輸入“cmd”à回車(chē)à進(jìn)入到操作的控件所在的目錄,如圖6所示:
(圖6:進(jìn)入E:/evS1300目錄)
2、創(chuàng)建PVK文件(私人密匙文件),在命令行中輸入“makecert -sk evS1300 evS1300.pvk -n CN=XXXXXXX公司”,然后回車(chē),如圖7所示:
(圖7:創(chuàng)建PVK文件) 3、創(chuàng)建CER文件(公司證書(shū)),在命令行中輸入“makecert -sk evS1300.pvk evS1300.cer”,然后回車(chē),如圖8所示,若出現(xiàn)“Successed”提示,則會(huì)在E:/evS1300目錄下生成evS1300.cer文件,如圖9所示:
(圖8:創(chuàng)建CER文件)
(圖9:生成evS1300.cer) 4、創(chuàng)建SPC測(cè)試軟件出版商證明書(shū),在命令行中輸入“cert2spc evS1300.cer evS1300.spc”,然后回車(chē),如圖10所示:
(圖10:創(chuàng)建SPC測(cè)試軟件出版商證明書(shū))
5、創(chuàng)建INF文件,用記錄本編輯以下信息
[css] view plaincopy
如圖11所示,并保存為E:/evS1300/evS1300.inf,如圖12所示 (圖11:evS1300.inf)
(圖12:保存evS1300.inf) 在evS1300.inf的內(nèi)容里,[version]和[Add.Code]項(xiàng)是必須的,[Add.Code]的鍵值項(xiàng)的多少取決于以下你所配制項(xiàng)的多少。[msvcr71.dll]、[mfc71.dll]、[msvcp71.dll]就是上面我所說(shuō)不是必須的項(xiàng),只要你想把msvcr71.dll、mfc71.dll、msvcp71.dll包括在發(fā)布包里,那這么三項(xiàng)就必須寫(xiě)在inf里,而這三項(xiàng)的具體內(nèi)容是固定的,可復(fù)制過(guò)去即可。最為關(guān)鍵的就是[evS1300.ocx]項(xiàng),其中有clsid和FileVersion就是evS1300.ocx的classId和version,這要求必須一至,否我們發(fā)布出去的CAB包時(shí)不能在客戶端自動(dòng)更新下載安裝。說(shuō)到這里,那我們?nèi)绾尾拍苤?span lang="EN-US">evS1300.ocx 里面的classId和version呢?我在上面的必備條件里介紹到有一個(gè)用于查看ocx控件的工具ActvxDoc,對(duì),就是用它,我們雙擊這個(gè)文件運(yùn)行它,此時(shí)可以看到圖13所示的界面:
(圖13:ActiveX Documenter) 在圖13的界面里,點(diǎn)擊“File”à“Open…”,打開(kāi)您所要查看的OCX控件,如圖14所示:
(圖14:打開(kāi)控件) 打開(kāi)了控件之后,我們?cè)诮缑娴挠疫叢课弧?span lang="EN-US">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”,然后回車(chē),如圖16所示:
(圖16:創(chuàng)建CAB文件) 7、使用Code Signing Wizard簽署一個(gè)CAB文件,首先雙擊運(yùn)行工具集里面的signcode.exe(或在命令行里直接輸入“signcode”后回車(chē)),系統(tǒng)會(huì)彈出如圖17所示的數(shù)字簽名向?qū)В?/span>
(圖17:數(shù)字簽名向?qū)В?/span> 8、單擊“下一步(N)”按鈕,來(lái)到圖18所示,選擇要進(jìn)行數(shù)字簽名的且已做成CAB包的文件evS1300.cab文件。
(圖18:選擇CAB包)
9、選擇好CAB包后單擊“下一步(N)”按鈕,在選擇想要的簽名類(lèi)型里選擇“自定議(C)”并單擊“下一步(N)”按鈕,如圖19所示:
(圖19:選擇簽名類(lèi)型) 10、接下來(lái)單擊“從文件選擇(F)”按鈕,選擇剛剛制作的evS1300.cer,如圖20所示:
(圖20:選擇CER證書(shū)) 11、在圖20中單擊“下一步(N)”按鈕來(lái)到圖21,然后在圖21里選擇“CSP中的私鑰(K)”。
(圖21:選擇私鑰的位置) 12、在圖21中單擊“下一步(N)”按鈕,然后在圖22中的散列算法中選擇“shal”,并單擊“下一步(N)”按鈕。
(圖22:選擇散列算法) 13、在“證書(shū)路徑中的證書(shū)”中選擇“證書(shū)路徑中的所有證書(shū),包括根證書(shū)(C)”,在“其它證書(shū)(可選)”中選擇“包括在以下PKCS #7 證書(shū)(.p7b)文件中的證書(shū)(P):”,并單擊“瀏覽(R)…”按鈕選擇evS1300.spc文件,選擇完后單擊“下一步(N)”按鈕,如圖23所示:
(圖23:選擇其它證書(shū)) 14、接下來(lái)在彈出的“數(shù)據(jù)描述”窗口中輸入公司的名稱(chēng)和網(wǎng)址并單擊“下一步(N)”按鈕,如圖24所示:
(圖24:輸入數(shù)據(jù)描述) 15、現(xiàn)大部份工作都已完成,在接下來(lái)的一步當(dāng)中是可選的操作,其作用只是為CAB加入時(shí)間戳,此步驟完全可以不做,如圖25所示: (這里我提拱三個(gè)免費(fèi)的代碼簽名時(shí)間戳地址) VeriSign: http://timestamp./scripts/timstamp.dll Comodo: http://timestamp./authenticode GeoTrust/TrustCenter: http://www./codesigning/timestamp
(圖25:給數(shù)據(jù)蓋時(shí)間戳) 16、完成,在圖25中單擊“下一步(N)”按鈕便可來(lái)到數(shù)字簽名向?qū)У淖詈笠徊?,即操作總覽,如圖26所示,單擊“完成”按鈕便可大功告成,如圖27所示:
(圖26,完成操作總覽)
(圖27:簽名成功提示)
|
|