ServiceInstaller イベント

名前 | 説明 | |
---|---|---|
![]() | AfterInstall | Installers プロパティ内のすべてのインストーラの Install メソッドが実行された後で発生します。 ( Installer から継承されます。) |
![]() | AfterRollback | Installers プロパティ内のすべてのインストーラによるインストールがロールバックされた後で発生します。 ( Installer から継承されます。) |
![]() | AfterUninstall | Installers プロパティ内のすべてのインストーラのアンインストールが実行された後で発生します。 ( Installer から継承されます。) |
![]() | BeforeInstall | インストーラ コレクション内の各インストーラの Install メソッドが実行される前に発生します。 ( Installer から継承されます。) |
![]() | BeforeRollback | Installers プロパティ内のインストーラによるインストールがロールバックされる前に発生します。 ( Installer から継承されます。) |
![]() | BeforeUninstall | Installers プロパティ内のインストーラのアンインストールが実行される前に発生します。 ( Installer から継承されます。) |
![]() | Committed | Installers プロパティ内のすべてのインストーラがインストールをコミットした後で発生します。 ( Installer から継承されます。) |
![]() | Committing | Installers プロパティ内のインストーラがインストールをコミットする前に発生します。 ( Installer から継承されます。) |
![]() | Disposed | コンポーネントの Disposed イベントを待機するイベント ハンドラを追加します。 ( Component から継承されます。) |

ServiceInstaller クラス
アセンブリ: System.ServiceProcess (system.serviceprocess.dll 内)


ServiceInstaller は、関連付けられているサービスに固有の処理を行います。このクラスは、インストール ユーティリティが、サービスに関連付けられているレジストリ値を HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services レジストリ キー内のサブキーに書き込む場合に使用されます。サービスは、このサブキー内の ServiceName によって識別されます。サブキーには、サービスが属する実行可能ファイルまたは DLL (ダイナミック リンク ライブラリ) の名前も含まれます。
サービスをインストールするには、Installer クラスから継承するプロジェクト インストーラ クラスを作成し、そのクラスの RunInstallerAttribute 属性を true に設定します。プロジェクト内では、サービス アプリケーションごとに 1 つの ServiceProcessInstaller インスタンス、およびアプリケーション内の各サービスにつき 1 つの ServiceInstaller インスタンスを作成します。プロジェクト インストーラ クラス コンストラクタ内で、ServiceProcessInstaller および ServiceInstaller インスタンスを使用してサービスのインストール プロパティを設定し、そのインスタンスを Installers コレクションに追加します。
![]() |
---|
インストーラ インスタンスを追加する場合にはコンストラクタを使用することをお勧めします。ただし、Install メソッド内の Installers コレクションに追加する必要がある場合は、Uninstall メソッド内のコレクションにも同じように追加する必要があります。 |
Installer クラスから派生するクラスの場合、Installers コレクションの状態は、Install および Uninstall メソッド内と同じである必要があります。ただし、インストーラ インスタンスをカスタム インストーラ クラス コンストラクタ内の Installers コレクションに追加した場合は、Install メソッドおよび Uninstall メソッド間でコレクションを保持する必要はありません。インストール ユーティリティの呼び出しにより、RunInstallerAttribute 属性が検索されます。属性が true の場合、ユーティリティは、プロジェクト インストーラに関連付けられた Installers コレクションに追加されたすべてのサービスをインストールします。RunInstallerAttribute が false の場合、または存在しない場合、インストール ユーティリティはプロジェクト インストーラを無視します。
プロジェクト インストール クラスに関連付けられた ServiceProcessInstaller は、プロジェクト内のすべての ServiceInstaller インスタンスに共通の情報をインストールします。サービスにインストール プロジェクト内の他のサービスと区別される内容が含まれている場合は、このメソッドによってサービスに固有の情報がインストールされます。
![]() |
---|
ServiceName は、ServiceBase から派生したクラスの ServiceBase.ServiceName と必ず同じにする必要があります。通常、サービスの ServiceBase.ServiceName プロパティの値は、サービス アプリケーションの実行可能ファイルの Main() 関数内で設定されます。サービス コントロール マネージャは、ServiceInstaller.ServiceName プロパティを使用して、この実行可能ファイル内でサービスを検索します。 |
ServiceInstaller のその他のプロパティは、プロジェクト インストーラの Installers コレクションに追加する前または後に変更できます。たとえば、サービスの StartType で、サービスが再起動時に自動的に起動するのか、ユーザーが手動で起動するようにするのかを設定できます。
通常、コード内の ServiceInstaller では、これらのメソッドを呼び出しません。これらのメソッドを呼び出すのは、一般にはインストール ユーティリティだけです。インストール ユーティリティは、インストール プロセス中に、ServiceProcessInstaller.Install メソッドと ServiceInstaller.Install メソッドを自動的に呼び出します。必要に応じて、インストール済みのすべてのコンポーネントで Rollback (または ServiceInstaller.Rollback) を呼び出すことによって、エラーを回復します。
インストール ユーティリティで Uninstall を呼び出してオブジェクトを削除します。
アプリケーションのインストール ルーチンは、既にインストールされているコンポーネントに関する情報を、プロジェクト インストーラの Installer.Context を使用して自動的に維持します。この状態情報は、ServiceProcessInstaller インスタンスとして継続的に更新されます。各 ServiceInstaller インスタンスは、ユーティリティによってインストールされます。通常、コードでは状態情報を明示的に変更する必要はありません。
インストールが実行されると、EventLogInstaller が自動的に作成されて、ServiceBase 派生クラスに関連付けられているイベント ログ ソースがインストールされます。このソースの Log プロパティは、ServiceInstaller コンストラクタによって、コンピュータのアプリケーション ログに設定されます。ServiceInstaller の ServiceName (サービスの ServiceBase.ServiceName と同一にする必要があります) を設定すると、Source は自動的に同じ値に設定されます。インストールに失敗すると、ソースのインストールは、前にインストールしたサービスの内容に合わせてロールバックされます。
サービスが実行中の場合、Uninstall メソッドは停止しようとします。停止が成功したかどうかにかかわらず、Uninstall は Install で行われた変更を元に戻します。イベント ログに対して新しいソースが作成されると、このソースは削除されます。

Installer から継承される、MyProjectInstaller という名前のプロジェクト インストーラを作成する例を次に示します。この例では、2 つのサービス "Hello-World Service 1" と "Hello-World Service 2" を格納する、サービスの実行可能ファイルがあることを前提にしています。インストール ユーティリティによって呼び出される MyProjectInstaller のコンストラクタ内では、これらの各サービスに対し ServiceInstaller オブジェクトが作成され、実行可能ファイルに対して ServiceProcessInstaller が作成されます。インストール ユーティリティで MyProjectInstaller を有効なインストーラとして認識できるように、RunInstallerAttribute 属性は true に設定されます。
インストーラが Installers コレクションに追加される前に、オプションのプロパティがプロセス インストーラおよびサービス インストーラに設定されます。インストール ユーティリティが MyProjectInstaller にアクセスすると、InstallerCollection.Add の呼び出しを通じて Installers コレクションに追加されたオブジェクトが順番にインストールされます。このプロセス中に、インストーラは、インストールされているオブジェクトを示す状態情報を保持します。このため、インストールに失敗した場合でも、それぞれのオブジェクトを順番に回復できます。
通常、プロジェクト インストーラ クラスのインスタンスは明示的に作成されません。プロジェクト インストーラ クラスを作成して、RunInstallerAttribute 属性を構文に追加しますが、実際にクラスを呼び出してインスタンス化するのはインストール ユーティリティで行います。
Imports System Imports System.Collections Imports System.Configuration.Install Imports System.ServiceProcess Imports System.ComponentModel <RunInstallerAttribute(True)> _ Public Class MyProjectInstaller Inherits Installer Private serviceInstaller1 As ServiceInstaller Private serviceInstaller2 As ServiceInstaller Private processInstaller As ServiceProcessInstaller Public Sub New() ' Instantiate installers for process and services. processInstaller = New ServiceProcessInstaller() serviceInstaller1 = New ServiceInstaller() serviceInstaller2 = New ServiceInstaller() ' The services will run under the system account. processInstaller.Account = ServiceAccount.LocalSystem ' The services will be started manually. serviceInstaller1.StartType = ServiceStartMode.Manual serviceInstaller2.StartType = ServiceStartMode.Manual ' ServiceName must equal those on ServiceBase derived classes. serviceInstaller1.ServiceName = "Hello-World Service 1" serviceInstaller2.ServiceName = "Hello-World Service 2" ' Add installers to collection. Order is not important. Installers.Add(serviceInstaller1) Installers.Add(serviceInstaller2) Installers.Add(processInstaller) End Sub End Class
using System; using System.Collections; using System.Configuration.Install; using System.ServiceProcess; using System.ComponentModel; [RunInstallerAttribute(true)] public class MyProjectInstaller: Installer{ private ServiceInstaller serviceInstaller1; private ServiceInstaller serviceInstaller2; private ServiceProcessInstaller processInstaller; public MyProjectInstaller(){ // Instantiate installers for process and services. processInstaller = new ServiceProcessInstaller(); serviceInstaller1 = new ServiceInstaller(); serviceInstaller2 = new ServiceInstaller(); // The services run under the system account. processInstaller.Account = ServiceAccount.LocalSystem; // The services are started manually. serviceInstaller1.StartType = ServiceStartMode.Manual; serviceInstaller2.StartType = ServiceStartMode.Manual; // ServiceName must equal those on ServiceBase derived classes. serviceInstaller1.ServiceName = "Hello-World Service 1"; serviceInstaller2.ServiceName = "Hello-World Service 2"; // Add installers to collection. Order is not important. Installers.Add(serviceInstaller1); Installers.Add(serviceInstaller2); Installers.Add(processInstaller); } }
#using <System.dll> #using <System.ServiceProcess.dll> #using <System.Configuration.Install.dll> using namespace System; using namespace System::Collections; using namespace System::Configuration::Install; using namespace System::ServiceProcess; using namespace System::ComponentModel; [RunInstallerAttribute(true)] public ref class MyProjectInstaller: public Installer { private: ServiceInstaller^ serviceInstaller1; ServiceInstaller^ serviceInstaller2; ServiceProcessInstaller^ processInstaller; public: MyProjectInstaller() { // Instantiate installers for process and services. processInstaller = gcnew ServiceProcessInstaller; serviceInstaller1 = gcnew ServiceInstaller; serviceInstaller2 = gcnew ServiceInstaller; // The services run under the system account. processInstaller->Account = ServiceAccount::LocalSystem; // The services are started manually. serviceInstaller1->StartType = ServiceStartMode::Manual; serviceInstaller2->StartType = ServiceStartMode::Manual; // ServiceName must equal those on ServiceBase derived classes. serviceInstaller1->ServiceName = "Hello-World Service 1"; serviceInstaller2->ServiceName = "Hello-World Service 2"; // Add installers to collection. Order is not important. Installers->Add( serviceInstaller1 ); Installers->Add( serviceInstaller2 ); Installers->Add( processInstaller ); } };
import System.*; import System.Collections.*; import System.Configuration.Install.*; import System.ServiceProcess.*; import System.ComponentModel.*; /** @attribute RunInstallerAttribute(true) */ public class MyProjectInstaller extends Installer { private ServiceInstaller serviceInstaller1; private ServiceInstaller serviceInstaller2; private ServiceProcessInstaller processInstaller; public MyProjectInstaller() { // Instantiate installers for process and services. processInstaller = new ServiceProcessInstaller(); serviceInstaller1 = new ServiceInstaller(); serviceInstaller2 = new ServiceInstaller(); // The services run under the system account. processInstaller.set_Account(ServiceAccount.LocalSystem); // The services are started manually. serviceInstaller1.set_StartType(ServiceStartMode.Manual); serviceInstaller2.set_StartType(ServiceStartMode.Manual); // ServiceName must equal those on ServiceBase derived classes. serviceInstaller1.set_ServiceName("Hello-World Service 1"); serviceInstaller2.set_ServiceName("Hello-World Service 2"); // Add installers to collection. Order is not important. get_Installers().Add(serviceInstaller1); get_Installers().Add(serviceInstaller2); get_Installers().Add(processInstaller); } //MyProjectInstaller } //MyProjectInstaller

System.MarshalByRefObject
System.ComponentModel.Component
System.Configuration.Install.Installer
System.Configuration.Install.ComponentInstaller
System.ServiceProcess.ServiceInstaller


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ServiceInstaller コンストラクタ
アセンブリ: System.ServiceProcess (system.serviceprocess.dll 内)


サービスをインストールするには、Installer クラスから継承するプロジェクト インストーラ クラスを作成し、そのクラスの RunInstallerAttribute 属性を true に設定します。プロジェクト内では、サービス アプリケーションごとに 1 つの ServiceProcessInstaller インスタンス、およびアプリケーション内の各サービスにつき 1 つの ServiceInstaller インスタンスを作成します。プロジェクト インストーラ クラス コンストラクタ内で、ServiceProcessInstaller および ServiceInstaller インスタンスを使用してサービスのインストール プロパティを設定し、そのインスタンスを Installers コレクションに追加します。
ServiceInstaller コンストラクタは、Log プロパティがコンピュータのアプリケーション ログに設定されているイベント ログ ソースおよび EventLogInstaller を自動的に生成します。ServiceInstaller の ServiceName を設定すると (サービスの ServiceBase.ServiceName と同一にする必要があります)、イベント ログの Source プロパティは自動的に同じ値に設定されます。インストールが失敗した場合、ソースは自動的に削除されます。
ServiceInstaller コンストラクタは、StartType プロパティを ServiceStartMode.Manual に設定して、ユーザーがサービスを開始することを指定します。このプロパティを ServiceStartMode.Automatic に変更すると、コンピュータの再起動時にサービスを開始するように指定できます。


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ServiceInstaller プロパティ

名前 | 説明 | |
---|---|---|
![]() | Container | Component を格納している IContainer を取得します。 ( Component から継承されます。) |
![]() | Context | 現在のインストールに関する情報を取得または設定します。 ( Installer から継承されます。) |
![]() | Description | サービスの説明を取得または設定します。 |
![]() | DisplayName | ユーザーがサービスを識別できるような表示名を示します。 |
![]() | HelpText | インストーラ コレクション内のすべてのインストーラに関するヘルプ テキストを取得します。 ( Installer から継承されます。) |
![]() | Installers | インストーラが格納しているインストーラのコレクションを取得します。 ( Installer から継承されます。) |
![]() | Parent | インストーラが属しているコレクションを格納しているインストーラを取得または設定します。 ( Installer から継承されます。) |
![]() | ServiceName | このサービスを識別するためにシステムで使用される名前を示します。このプロパティは、インストールするサービスの ServiceBase.ServiceName と同じにする必要があります。 |
![]() | ServicesDependedOn | このサービスを実行するために実行する必要があるサービスを示します。 |
![]() | Site | Component の ISite を取得または設定します。 ( Component から継承されます。) |
![]() | StartType | このサービスを開始する方法と時点を示します。 |

名前 | 説明 | |
---|---|---|
![]() | CanRaiseEvents | コンポーネントがイベントを発生させることがきるかどうかを示す値を取得します。 ( Component から継承されます。) |
![]() | DesignMode | Component が現在デザイン モードかどうかを示す値を取得します。 ( Component から継承されます。) |
![]() | Events | Component に結び付けられているイベント ハンドラのリストを取得します。 ( Component から継承されます。) |

ServiceInstaller メソッド


名前 | 説明 | |
---|---|---|
![]() | Dispose | オーバーロードされます。 Component によって使用されているリソースを解放します。 ( Component から継承されます。) |
![]() | Finalize | Component がガベージ コレクションによってクリアされる前に、アンマネージ リソースを解放し、その他のクリーンアップ操作を実行します。 ( Component から継承されます。) |
![]() | GetService | Component またはその Container で提供されるサービスを表すオブジェクトを返します。 ( Component から継承されます。) |
![]() | MemberwiseClone | オーバーロードされます。 ( MarshalByRefObject から継承されます。) |
![]() | OnAfterInstall | AfterInstall イベントを発生させます。 ( Installer から継承されます。) |
![]() | OnAfterRollback | AfterRollback イベントを発生させます。 ( Installer から継承されます。) |
![]() | OnAfterUninstall | AfterUninstall イベントを発生させます。 ( Installer から継承されます。) |
![]() | OnBeforeInstall | BeforeInstall イベントを発生させます。 ( Installer から継承されます。) |
![]() | OnBeforeRollback | BeforeRollback イベントを発生させます。 ( Installer から継承されます。) |
![]() | OnBeforeUninstall | BeforeUninstall イベントを発生させます。 ( Installer から継承されます。) |
![]() | OnCommitted | Committed イベントを発生させます。 ( Installer から継承されます。) |
![]() | OnCommitting | Committing イベントを発生させます。 ( Installer から継承されます。) |

ServiceInstaller メンバ
ServiceBase を拡張するクラスをインストールしてサービスを実装します。このクラスは、サービス アプリケーションのインストール時に、インストール ユーティリティで呼び出されます。
ServiceInstaller データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | Container | Component を格納している IContainer を取得します。(Component から継承されます。) |
![]() | Context | 現在のインストールに関する情報を取得または設定します。(Installer から継承されます。) |
![]() | Description | サービスの説明を取得または設定します。 |
![]() | DisplayName | ユーザーがサービスを識別できるような表示名を示します。 |
![]() | HelpText | インストーラ コレクション内のすべてのインストーラに関するヘルプ テキストを取得します。(Installer から継承されます。) |
![]() | Installers | インストーラが格納しているインストーラのコレクションを取得します。(Installer から継承されます。) |
![]() | Parent | インストーラが属しているコレクションを格納しているインストーラを取得または設定します。(Installer から継承されます。) |
![]() | ServiceName | このサービスを識別するためにシステムで使用される名前を示します。このプロパティは、インストールするサービスの ServiceBase.ServiceName と同じにする必要があります。 |
![]() | ServicesDependedOn | このサービスを実行するために実行する必要があるサービスを示します。 |
![]() | Site | Component の ISite を取得または設定します。(Component から継承されます。) |
![]() | StartType | このサービスを開始する方法と時点を示します。 |

名前 | 説明 | |
---|---|---|
![]() | CanRaiseEvents | コンポーネントがイベントを発生させることがきるかどうかを示す値を取得します。(Component から継承されます。) |
![]() | DesignMode | Component が現在デザイン モードかどうかを示す値を取得します。(Component から継承されます。) |
![]() | Events | Component に結び付けられているイベント ハンドラのリストを取得します。(Component から継承されます。) |


名前 | 説明 | |
---|---|---|
![]() | Dispose | オーバーロードされます。 Component によって使用されているリソースを解放します。 (Component から継承されます。) |
![]() | Finalize | Component がガベージ コレクションによってクリアされる前に、アンマネージ リソースを解放し、その他のクリーンアップ操作を実行します。 (Component から継承されます。) |
![]() | GetService | Component またはその Container で提供されるサービスを表すオブジェクトを返します。 (Component から継承されます。) |
![]() | MemberwiseClone | オーバーロードされます。 ( MarshalByRefObject から継承されます。) |
![]() | OnAfterInstall | AfterInstall イベントを発生させます。 (Installer から継承されます。) |
![]() | OnAfterRollback | AfterRollback イベントを発生させます。 (Installer から継承されます。) |
![]() | OnAfterUninstall | AfterUninstall イベントを発生させます。 (Installer から継承されます。) |
![]() | OnBeforeInstall | BeforeInstall イベントを発生させます。 (Installer から継承されます。) |
![]() | OnBeforeRollback | BeforeRollback イベントを発生させます。 (Installer から継承されます。) |
![]() | OnBeforeUninstall | BeforeUninstall イベントを発生させます。 (Installer から継承されます。) |
![]() | OnCommitted | Committed イベントを発生させます。 (Installer から継承されます。) |
![]() | OnCommitting | Committing イベントを発生させます。 (Installer から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | AfterInstall | Installers プロパティ内のすべてのインストーラの Install メソッドが実行された後で発生します。(Installer から継承されます。) |
![]() | AfterRollback | Installers プロパティ内のすべてのインストーラによるインストールがロールバックされた後で発生します。(Installer から継承されます。) |
![]() | AfterUninstall | Installers プロパティ内のすべてのインストーラのアンインストールが実行された後で発生します。(Installer から継承されます。) |
![]() | BeforeInstall | インストーラ コレクション内の各インストーラの Install メソッドが実行される前に発生します。(Installer から継承されます。) |
![]() | BeforeRollback | Installers プロパティ内のインストーラによるインストールがロールバックされる前に発生します。(Installer から継承されます。) |
![]() | BeforeUninstall | Installers プロパティ内のインストーラのアンインストールが実行される前に発生します。(Installer から継承されます。) |
![]() | Committed | Installers プロパティ内のすべてのインストーラがインストールをコミットした後で発生します。(Installer から継承されます。) |
![]() | Committing | Installers プロパティ内のインストーラがインストールをコミットする前に発生します。(Installer から継承されます。) |
![]() | Disposed | コンポーネントの Disposed イベントを待機するイベント ハンドラを追加します。(Component から継承されます。) |

- ServiceInstallerのページへのリンク