延續前兩篇《C# 開發 ActiveX 控制項(一):建立基礎控制項》與《(二):實現 JavaScript 互動與安全標記》,本文將詳細說明如何將開發完成的 ActiveX 控制項打包成安裝程式、透過 Web 頁面自動下載安裝(Codebase),以及解決「未簽名控制項無法載入」的代碼簽章問題。
vsdrpCOM(表示註冊為 COM 元件)。
Web Bootstrapper。https://yourdomain.com/ActiveX/),不支援相對路徑。開發階段可用 https://localhost/ActiveX/ 測試。
Setup.exe 與 .msi 檔案。C:\inetpub\wwwroot\ActiveX\)。Setup.exe 驗證安裝無誤。<body bgcolor='#223344'>
<object id="helloworld"
classid="clsid:9551B223-6188-4387-B293-C7D9D8173E3A"
width="184" height="96"
codebase="ActiveX/Setup.exe">
</object>
<br>
<input type='button' onclick='helloworld.ShowMessage("Hello World!")' value='Click'>
</body>
關鍵點:codebase 屬性指定安裝程式下載位置,支援相對路徑。當瀏覽器偵測到機器未安裝該 CLSID 的控制項時,會自動下載並執行 Setup.exe。
未簽名的 ActiveX 控制項在 IE 中會被阻擋或跳出安全警告。必須對 .msi 或 Setup.exe 進行 Authenticode 簽章。
REM 取得代碼簽章憑證(.pfx),需向受信任 CA 申請(選擇「進階憑證請求」)
signtool sign /f MyCert.pfx /p YourPassword /tr https://timestamp.digicert.com /td sha256 /fd sha256 Setup.exe
signtool sign /f MyCert.pfx /p YourPassword /tr https://timestamp.digicert.com /td sha256 /fd sha256 YourControl.msi
注意:申請憑證時務必選擇 Code Signing 用途,並包含私鑰匯出。自簽憑證僅適合內部測試,正式環境必須使用公開信任 CA 核發的憑證。
codebase URL 是否正確可下載。Setup.exe。ActiveX 控制項的發布流程核心在於:Installer 專案註冊 COM → Web Bootstrapper 產生線上安裝包 → codebase 指向安裝程式 → Authenticode 簽章建立信任。完成這四步,即可實現使用者瀏覽網頁時自動下載、安裝、載入控制項的無縫體驗。