vc6開發ActiveX並發布全攻略(二)

來源:互聯網
上載者:User

 [背景]

       做過ActiveX控制項的朋友都知道,要想把自己做的ActiveX控制項功能放在自己的網頁上使用,那麼使用者在用戶端就必須進行本地的註冊,也就是說使用者得首先要把該ActiveX控制項(test.ocx)放在原生%system%/system32下,然後運行DOS工具裡面運行regsvr32 test.ocx命令進行註冊。但如果真是這麼去做的話,那麼代表著你處於危險之中了,因為您是通過讓使用者自己去部署設定環境來達到你的目的,這就失去軟體項目本身所存在的價值。那麼面對這種情況,我們應該如何解決呢?聰明的你一定會很快就想到,我們可以使使用者在用戶端自動下載安裝該ActiveX控制項,這樣一來即可以實現我們所想要的功能,又不需要使用者自己去部署設定環境,這豈不是一舉兩得。

[必備條件]

一、用於將ActiveX控制項進行打包並加資料鑒名的工具集:

makecert.exe 製作cer格式的認證,即X.509認證,同時可以建立私密金鑰和公開金鑰。

cert2spc.exe  將cer格式認證轉換成spc格式認證,即PKCS #7認證。

cabarc.exe   將ocx打包成cab。

signcode.exe 將認證簽署到ocx上去。

chktrust.exe  檢查簽署認證後的ocx是否正確。

certmgr.exe 是管理憑證用的。

二、用於進行打包用的ocx控制項evS1300.ocx。

三、用於查看ocx控制項的工具ActvxDoc。

[製作過程]

一、環境設定

1、下載makeCAB包,解壓到本地目錄(如E盤根目錄),如查看到1所示的工具集,則表示已下載成功:

(圖1:makeCAB包的工具集)

       2、設定系統內容變數,按右鍵“我的電腦”à選擇“屬性”à選擇“進階”選項卡,開啟2所示的系統屬性面版塊:

(圖2:系統屬性版塊)

       3、在系統屬性版塊裡單擊“環境變數(N)”按鈕,開啟圖3:

(圖3:系統變數)

       4、選擇“系統變數(S)”裡的“建立(W)”按鈕,開啟“編輯系統變數”對話方塊,4所示,然後在“變數值(V)”裡加入“;E\makeCAB”:

(圖4:編輯系統變數)

二、將用於打包的OCX控制項放在E盤根目錄下(本文檔使用名為evS1300.ocx的控制項來進行介紹),5所示,其中evS1300.ocx是本文檔進行操作的控制項對象,而mfc71.dll、msvcp71.dll、msvcr71.dll這三個檔案通常是進行打包時一併打包的檔案,但不是必須(推薦一起打包),其可在系統中的system32目錄下找到,請自行準備。

(圖5;用於操作的OCX控制項路徑)

三、ActiveX發布步驟

1、單擊“開始”à“動行(R)”à輸入“cmd”à斷行符號à進入到操作的控制項所在的目錄,6所示:

(圖6:進入E:\evS1300目錄)

 

2、建立PVK檔案(私人密匙檔案),在命令列中輸入“makecert -sk evS1300 evS1300.pvk -n CN=XXXXXXX公司”,然後斷行符號,7所示:

(圖7:建立PVK檔案)

       3、建立CER檔案(公司認證),在命令列中輸入“makecert -sk evS1300.pvk evS1300.cer”,然後斷行符號,8所示,若出現“Successed”提示,則會在E:\evS1300目錄下產生evS1300.cer檔案,9所示:

(圖8:建立CER檔案)

(圖9:產生evS1300.cer)

       4、建立SPC測試軟體出版商證明書,在命令列中輸入“cert2spc evS1300.cer evS1300.spc”,然後斷行符號,10所示:

(圖10:建立SPC測試軟體出版商證明書)

       5、建立INF檔案,用記錄本編輯以下資訊

  1. [version]   
  2. signature="$CHINA$"  
  3. AdvancedINF=1.0  
  4.   
  5. [Add.Code]   
  6. evS1300.ocx=evS1300.ocx   
  7. msvcr71.dll=msvcr71.dll   
  8. mfc71.dll=mfc71.dll   
  9. msvcp71.dll=msvcp71.dll   
  10.   
  11. [evS1300.ocx]   
  12. file=thiscab   
  13. clsid={0440906E-9BD6-4F3E-B65A-39E1B339D9DA}   
  14. FileVersion=1,0,0,0  
  15. RegisterServer=yes   
  16.   
  17. [msvcr71.dll]   
  18. file-win32-x86=thiscab   
  19. RegisterServer=no   
  20. DestDir=11  
  21. FileVersion=7,10,3052,4  
  22.   
  23. [mfc71.dll]   
  24. file-win32-x86=thiscab   
  25. RegisterServer=no   
  26. DestDir=11  
  27. FileVersion=7,10,3077,0  
  28.   
  29. [msvcp71.dll]   
  30. file-win32-x86=thiscab   
  31. RegisterServer=no   
  32. DestDir=11  
  33. FileVersion=7,10,3077,0  

     11所示,並儲存為E:\evS1300\evS1300.inf,12所示

 

(圖11:evS1300.inf)

(圖12:儲存evS1300.inf)

       在evS1300.inf的內容裡,[version]和[Add.Code]項是必須的,[Add.Code]的索引值項的多少取決於以下你所配製項的多少。[msvcr71.dll]、[mfc71.dll]、[msvcp71.dll]就是上面我所說不是必須的項,只要你想把msvcr71.dll、mfc71.dll、msvcp71.dll包括在發布包裡,那這麼三項就必須寫在inf裡,而這三項的具體內容是固定的,可複製過去即可。最為關鍵的就是[evS1300.ocx]項,其中有clsid和FileVersion就是evS1300.ocx的classId和version,這要求必須一至,否我們發布出去的CAB包時不能在用戶端自動更新下載安裝。說到這裡,那我們如何才能知道evS1300.ocx裡面的classId和version呢?我在上面的必備條件裡介紹到有一個用於查看ocx控制項的工具ActvxDoc,對,就是用它,我們雙擊這個檔案運行它,此時可以看到圖13所示的介面:

(圖13:ActiveX Documenter)

在圖13的介面裡,點擊“File”à“Open…”,開啟您所要查看的OCX控制項,14所示:

(圖14:開啟控制項)

開啟了控制項之後,我們在介面的右邊部位“Class”的下拉框裡選擇“<all interfaces=""></all>”就可以看到我們想要尋找的FileVersion和classId,15所示:

(圖15:控制項屬性)

       6、建立CAB檔案,在命令列中輸入“cabarc -s 6144 n evS1300.cab msvcr71.dll mfc71.dll msvcp71.dll evS1300.ocx evS1300.inf”,然後斷行符號,16所示:

(圖16:建立CAB檔案)

       7、使用Code Signing Wizard簽署一個CAB檔案,首先雙擊運行工具集裡面的signcode.exe(或在命令列裡直接輸入“signcode”後斷行符號),系統會彈出17所示的數位簽章嚮導:

(圖17:數位簽章嚮導)

 

       8、單擊“下一步(N)”按鈕,來到圖18所示,選擇要進行數位簽章的且已做成CAB包的檔案evS1300.cab檔案。

 

(圖18:選擇CAB包)

 

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、接下來在彈出的“資料描述”視窗中輸入公司的名稱和網址並單擊“下一步(N)”按鈕,24所示:

(圖24:輸入資料描述)

       15、現大部份工作都已完成,在接下來的一步當中是可選的操作,其作用只是為CAB加入時間戳記,此步驟完全可以不做,25所示:(這裡我提拱三個免費的程式碼簽署時間戳記地址)

  VeriSign:  http://timestamp.verisign.com/scripts/timstamp.dll

  Comodo:  http://timestamp.comodoca.com/authenticode

  GeoTrust/TrustCenter: http://www.trustcenter.de/codesigning/timestamp

(圖25:給資料蓋時間戳記)

       16、完成,在圖25中單擊“下一步(N)”按鈕便可來到數位簽章嚮導的最後一步,即操作總覽,26所示,單擊“完成”按鈕便可大功告成,27所示:

(圖26,完成操作總覽)

(圖27:簽名成功提示)

 

      CAB工具下載

   轉自:http://huangzh.javaeye.com/blog/110834

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.