Visual Studio 內建的安裝部署項目雖不及 InstallShield 功能豐富,但語法簡潔、原生支持 C#、對一般應用完全足夠。本文以 ASP.NET 專案 eHRM 為例,詳細演示從文件部署、註冊表操作、自定義 UI 到數據庫安裝的完整流程。
web.config(需安裝時修改連接字串)。Installer 衍生類實現自定義邏輯(建庫、配置文件修改等)。安裝專案提供 6 大編輯器,本實戰主要使用前三個:
| 編輯器 | 用途 |
|---|---|
| 文件系統編輯器 | 目標機器文件部署、虛擬目錄創建、權限設置 |
| 用戶界面編輯器 | 安裝向導對話框流程、參數收集 |
| 自定義動作編輯器 | 綁定 Install/Uninstall/Rollback 階段的自定義代碼 |
在「Web 應用程序文件夾」屬性中設置 VirtualDirectory 定義 IIS 虛擬目錄名稱。添加 eHRM 的「內容輸出」與 eHRMSetUpComponent 的「主輸出」。
注意事項:
*.cs/*.resx。在 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);
}
VS.NET 內建對話框有限。擴展方法:
FrmConfig.cs 設計配置界面。OnAfterInstall 中彈出:new FrmConfig().ShowDialog();安裝過程將阻塞等待用戶輸入,適合收集數據庫連接等敏感信息。
在自定義動作編輯器中,為 Install/Commit/Rollback/Uninstall 四階段分別添加 Component 主輸出,設置 CustomActionData:
/LogicDir=[TARGETDIR] /VirtualDir=[TARGETVDIR]
[TARGETDIR]、[TARGETVDIR] 為內建屬性,分別對應物理路徑與虛擬目錄。代碼中通過 Context.Parameters 讀取。







GO 批次分隔符,僅保留標準 T-SQL 語句。InstallerPrivileges。