鏈接:https://msdn.microsoft.com/zh-cn/library/system.configuration.install.installer.aspx
Installer 類
提供自定義安裝的基礎。
程序集: System.Configuration.Install(System.Configuration.Install.dll 中)
System.MarshalByRefObject
System.ComponentModel.Component
System.Configuration.Install.Installer
System.Configuration.Install.AssemblyInstaller
System.Configuration.Install.ComponentInstaller
System.Configuration.Install.TransactedInstaller
System.Management.Instrumentation.DefaultManagementInstaller
System.Management.Instrumentation.DefaultManagementProjectInstaller
System.Management.Instrumentation.ManagementInstaller
名稱 | 說明 | |
---|---|---|
CanRaiseEvents |
獲取一個指示組件是否可以引發事件的值。(從 Component 繼承。) |
|
Container |
獲取 IContainer,它包含 Component。(從 Component 繼承。) |
|
Context |
獲取或設置關於當前安裝的信息。 |
|
DesignMode | ||
Events | ||
HelpText |
獲取安裝程序集合中所有安裝程序的幫助文字。 |
|
Installers |
獲取該安裝程序包含的安裝程序的集合。 |
|
Parent |
獲取或設置包含該安裝程序所屬的集合的安裝程序。 |
|
Site |
名稱 | 說明 | |
---|---|---|
AfterInstall |
在 Installers 屬性中的所有安裝程序的 Install 方法都運行後發生。 |
|
AfterRollback |
在回滾 Installers 屬性中所有安裝程序的安裝後發生。 |
|
AfterUninstall |
在 Installers 屬性中所有安裝程序都執行它們的卸載操作後發生。 |
|
BeforeInstall |
在安裝程序集合中每個安裝程序的 Install 方法運行前發生。 |
|
BeforeRollback |
在回滾 Installers 屬性中的安裝程序前發生。 |
|
BeforeUninstall |
在 Installers 屬性中的安裝程序執行它們的卸載操作前發生。 |
|
Committed |
在 Installers 屬性中的所有安裝程序均提交它們的安裝後發生。 |
|
Committing |
在 Installers 屬性中的安裝程序提交它們的安裝前發生。 |
|
Disposed |
這是.NET Framework 中的所有自定義安裝程序類的基類。安裝程序幫助的計算機上安裝應用程序的組件。
有幾個步驟必須遵循使用 Installer:
-
繼承 Installer 類。
-
添加 RunInstallerAttribute 到派生類,並將其設置爲 true。
-
將您的派生的類放在具有您的應用程序若要安裝的程序集。
-
調用安裝程序。例如,使用 InstallUtil.exe 來調用安裝程序。
Installers 屬性包含安裝程序的集合。如果此實例的 Installer 是安裝程序集合的一部分 Parent 屬性設置爲 Installer 包含列的集合的實例。爲舉例說明如何使用 Installers 集合,請參閱 AssemblyInstaller 類。
Install, ,Commit, ,Rollback, ,和 Uninstall 方法 Installer 類經歷的安裝程序中存儲集合 Installers 屬性,並調用每個安裝程序的相應方法。
Install, ,Commit, ,Rollback, ,和 Uninstall 方法不會在同一個總是調用 Installer 實例。例如,一個 Installer 可能同時安裝和提交應用程序中,使用實例,然後發佈到該實例的引用。更高版本,卸載應用程序時將創建一個新的引用 Installer 實例,也就是說, Uninstall 方法由不同的實例調用 Installer。爲此,在派生類中,不保存在一個安裝程序中的計算機的狀態。請改用 IDictionary ,它在調用之間保留並傳遞到您 Install, ,Commit, ,Rollback, ,和 Uninstall 方法。
兩種情況下說明需要將信息保存在狀態保護程序中 IDictionary。首先,假設您的安裝程序設置一個註冊表項。它應將保存的鍵中的原始值 IDictionary。如果安裝被回滾,則可以還原原始值。其次,假定安裝程序替換現有文件。將現有的文件保存在臨時目錄和文件中的新位置的位置中 IDictionary。如果安裝被回滾,較新的文件被刪除,並替換爲從臨時位置原始。
Installer.Context 屬性包含有關安裝的信息。例如,安裝過程中,要保存所需的信息的文件的位置的日誌文件的位置有關的信息 Uninstall 方法,並安裝可執行文件運行時輸入的命令行。
下面的示例演示如何使用 Installer 類。它將創建一個類,該類繼承自 Installer。當 Commit 即將完成, Committing 事件發生並顯示一條消息。若要使用 Installer 類中,您必須引用 System.Configuration.Install 您的項目中的程序集。
using System; using System.Collections; using System.ComponentModel; using System.Configuration.Install; // Set 'RunInstaller' attribute to true. [RunInstaller(true)] public class MyInstallerClass: Installer { public MyInstallerClass() :base() { // Attach the 'Committed' event. this.Committed += new InstallEventHandler(MyInstaller_Committed); // Attach the 'Committing' event. this.Committing += new InstallEventHandler(MyInstaller_Committing); } // Event handler for 'Committing' event. private void MyInstaller_Committing(object sender, InstallEventArgs e) { Console.WriteLine(""); Console.WriteLine("Committing Event occured."); Console.WriteLine(""); } // Event handler for 'Committed' event. private void MyInstaller_Committed(object sender, InstallEventArgs e) { Console.WriteLine(""); Console.WriteLine("Committed Event occured."); Console.WriteLine(""); } // Override the 'Install' method. public override void Install(IDictionary savedState) { base.Install(savedState); } // Override the 'Commit' method. public override void Commit(IDictionary savedState) { base.Commit(savedState); } // Override the 'Rollback' method. public override void Rollback(IDictionary savedState) { base.Rollback(savedState); } public static void Main() { Console.WriteLine("Usage : installutil.exe Installer.exe "); } }