ActiveX打包cab實現瀏覽器提示安裝註冊控制元件
阿新 • • 發佈:2019-02-08
實驗前提:
1.有一個可註冊的COM元件(如ActiveX)
2.最好能有一臺Windows server 2003作為證書伺服器,用來申請簽名程式碼的證書(本例使用從證書伺服器申請證書籤名)
3.程式碼簽名工具
實驗步驟:
1.編寫INF安裝配置檔案,沒怎麼研究過INF的寫法就不在這裡做過多說明,貼個示例
; Sample INF file for CryptoAPI.DLL [version] ; version signature (same for both NT and Win95) do not remove signature="$CHICAGO$" AdvancedINF=2.0 [Add.Code] CryptoAPI.dll=CryptoAPI.dll CryptoAPI.inf=CryptoAPI.inf [CryptoAPI.dll] file-win32-x86=thiscab clsid={CB955C27-9709-482A-8EEF-1DF63722A970} FileVersion=1,0,0,1 RegisterServer=yes [CryptoAPI.inf] file=thiscab ; end of INF file
2.使用SigningTools裡面的CABARC打包CAB,命令示例
"SigningTools/CABARC" -s 6144 n CryptoAPI.cab CryptoAPI.dll CryptoAPI.inf
3.配置證書頒發機構,建立具有程式碼簽名功能的證書模板,申請簽名程式碼的證書和私鑰
4.執行signcode.exe,會進入簽名嚮導,選擇能夠簽名的證書及待簽名的cab包即可
在填寫描述和web位置後,可以在後面下載ActiveX控制元件時看到該提示資訊
之後會提示簽名成功.
5.驗證程式碼簽名,輸入以下命令會有安裝提示,如果出現釋出者不受信任等情況,可能是簽名證書的根證書未被新增到系統受信任根證書
可以嘗試下載CA根證書,並新增至系統受信任證書庫即可
"SigningTools/chktrust.exe" CryptoAPI.cab
6.在html中使用cab
<object classid="clsid:E14615FC-8DC0-47A6-9512-E57320F5752C" id="obj" CODEBASE="CryptoAPI.cab#Version=1,0,0,1"></object>
7.在剛填寫的web位置同域名下的頁面(其他網頁測試會提示非安全的控制元件)測試即會提示下載註冊控制元件,如果還未出現則還是可能為未將簽名的根證書新增信任在某些情況需要使用者手動下載安裝註冊的話可以考慮EXE,
下面說下EXE安裝檔案註冊ActiveX控制元件
使用Visual Studio的Setup Project即可輕鬆完成該步驟
新建了安裝的工程後,可以通過以上方式檢視User Interface,可修改安裝步驟
一般將ActiveX安裝到預設位置,則刪除掉Install Folder步驟
然後檢視File System,在指定資料夾放入ActiveX元件
在DLL的屬性視窗中,修改Register的屬性值為vsdrfCOMSelfReg