首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 開發 ActiveX 控制項(三):發布部署與代碼簽章完整指南

     編輯:關於C語言

前言

延續前兩篇《C# 開發 ActiveX 控制項(一):建立基礎控制項》與《(二):實現 JavaScript 互動與安全標記》,本文將詳細說明如何將開發完成的 ActiveX 控制項打包成安裝程式、透過 Web 頁面自動下載安裝(Codebase),以及解決「未簽名控制項無法載入」的代碼簽章問題。

建立 Windows Installer 專案

  1. 在方案中新增專案類型:Setup Project(Visual Studio Installer 分類)。
  2. 右鍵專案 → Add → Project Output → 選擇 ActiveX 控制項專案的 Primary Output。
  3. 在「檔案系統編輯器」中,選取剛加入的 Primary Output,將 Register 屬性設為 vsdrpCOM(表示註冊為 COM 元件)。

設定 Register 為 vsdrpCOM

設定 Web 安裝引導程式

  1. 右鍵安裝專案 → Properties → 將 Installer 設為 Web Bootstrapper。
  2. 在 Web Bootstrapper 設定中,Installation URL 必須填寫絕對路徑(如 https://yourdomain.com/ActiveX/),不支援相對路徑。開發階段可用 https://localhost/ActiveX/ 測試。

Web Bootstrapper 設定

建置並部署到 IIS

  1. 建置安裝專案,產生 Setup.exe 與 .msi 檔案。
  2. 將整個輸出資料夾複製到 IIS 網站目錄下(例如 C:\inetpub\wwwroot\ActiveX\)。
  3. 直接在伺服器執行 Setup.exe 驗證安裝無誤。

修改網頁引用控制項(加入 codebase)

<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 簽章。

兩種簽章方式

  • 安裝專案屬性簽章:在安裝專案屬性頁的 Signing 分頁指定憑證(.pfx)。
  • 使用 signtool.exe(推薦):提供更彈性的時間戳記、雜湊演算法選擇。

使用 signtool.exe 簽章步驟

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 核發的憑證。

驗證與常見問題

  • 安裝後,在 IE「工具」→「管理增益集」中確認控制項狀態為「已載入」。
  • 若仍提示安全警告,檢查:
    ① 憑證鏈是否完整(中繼憑證已安裝)。
    ② 時間戳記伺服器是否可達。
    ③ codebase URL 是否正確可下載。
  • 簽章後重新建置安裝專案並部署新版 Setup.exe。

總結

ActiveX 控制項的發布流程核心在於:Installer 專案註冊 COM → Web Bootstrapper 產生線上安裝包 → codebase 指向安裝程式 → Authenticode 簽章建立信任。完成這四步,即可實現使用者瀏覽網頁時自動下載、安裝、載入控制項的無縫體驗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved