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

VS.NET 安裝部署深度實戰:從基礎配置到自定義操作全流程

     編輯:關於.NET

Visual Studio 內建的安裝部署項目雖不及 InstallShield 功能豐富,但語法簡潔、原生支持 C#、對一般應用完全足夠。本文以 ASP.NET 專案 eHRM 為例,詳細演示從文件部署、註冊表操作、自定義 UI 到數據庫安裝的完整流程。

專案結構規劃

  • eHRM:Web 應用主專案,含 web.config(需安裝時修改連接字串)。
  • eHRMSetUp:Web 安裝部署專案,定義文件系統、UI、自定義動作等。
  • eHRMSetUpComponent:類庫專案,編寫 Installer 衍生類實現自定義邏輯(建庫、配置文件修改等)。

核心編輯器詳解

安裝專案提供 6 大編輯器,本實戰主要使用前三個:

編輯器用途
文件系統編輯器目標機器文件部署、虛擬目錄創建、權限設置
用戶界面編輯器安裝向導對話框流程、參數收集
自定義動作編輯器綁定 Install/Uninstall/Rollback 階段的自定義代碼

關鍵實現步驟

1. 文件系統配置

在「Web 應用程序文件夾」屬性中設置 VirtualDirectory 定義 IIS 虛擬目錄名稱。添加 eHRM 的「內容輸出」與 eHRMSetUpComponent 的「主輸出」。

注意事項:

  • Resource 檔屬源文件,需添加「源文件輸出」並過濾 *.cs/*.resx。
  • Bin 目錄預設不在內容輸出中,需添加主專案「主輸出」或手動包含 DLL。

2. 自定義安裝類實現

在 eHRMSetUpComponent 中添加 eHRMInstaller.cs,繼承 System.Configuration.Install.Installer 並標記 [RunInstaller(true)]:

public override void Install(IDictionary stateSaver) {
    base.Install(stateSaver);
    string logicDir = Context.Parameters["LogicDir"];
    string virtualDir = Context.Parameters["VirtualDir"];
    // TODO: 執行建庫、修改 web.config 等操作
}

public override void Uninstall(IDictionary savedState) {
    // 反向清理操作
    base.Uninstall(savedState);
}

3. 自定義 UI 擴展

VS.NET 內建對話框有限。擴展方法:

  1. 在 Component 專案添加 WinForm FrmConfig.cs 設計配置界面。
  2. 在 OnAfterInstall 中彈出:new FrmConfig().ShowDialog();

安裝過程將阻塞等待用戶輸入,適合收集數據庫連接等敏感信息。

4. 自定義動作參數傳遞

在自定義動作編輯器中,為 Install/Commit/Rollback/Uninstall 四階段分別添加 Component 主輸出,設置 CustomActionData:

/LogicDir=[TARGETDIR] /VirtualDir=[TARGETVDIR]

[TARGETDIR]、[TARGETVDIR] 為內建屬性,分別對應物理路徑與虛擬目錄。代碼中通過 Context.Parameters 讀取。

完整流程圖解

eHRM 文件列表

添加 Web 安裝專案

六大編輯器工具欄

添加專案輸出

虛擬目錄屬性設置

用戶界面編輯器

自定義動作配置

常見坑點總結

  1. 目錄創建失敗:在文件系統編輯器中手動創建缺失目錄。
  2. SQL 腳本報錯:移除腳本中的 GO 批次分隔符,僅保留標準 T-SQL 語句。
  3. 權限不足:確保安裝以管理員身份運行,或配置自定義動作 InstallerPrivileges。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved