1. 程式人生 > >ActiveX打包cab實現瀏覽器提示安裝註冊控制元件

ActiveX打包cab實現瀏覽器提示安裝註冊控制元件

實驗前提:

                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