次の方法で共有


ServiceProcessInstaller クラス

定義

ServiceBase を拡張するクラスを含む実行可能ファイルをインストールします。 このクラスは、サービス アプリケーションのインストール時に InstallUtil.exe などのインストール ユーティリティで呼び出されます。

public ref class ServiceProcessInstaller : System::Configuration::Install::ComponentInstaller
public class ServiceProcessInstaller : System.Configuration.Install.ComponentInstaller
type ServiceProcessInstaller = class
    inherit ComponentInstaller
Public Class ServiceProcessInstaller
Inherits ComponentInstaller
継承

次の例では、 から Installer継承する MyProjectInstaller という名前のプロジェクト インストーラーを作成します。 "Hello-World Service 1" と "Hello-World Service 2" の 2 つのサービスを含むサービス実行可能ファイルがあることを前提としています。 MyProjectInstaller (インストール ユーティリティ ServiceInstaller によって呼び出される) のコンストラクター内では、サービスごとに オブジェクトが作成され ServiceProcessInstaller 、実行可能ファイルに 対して が作成されます。 インストール ユーティリティが MyProjectInstaller を有効なインストーラーとして認識するには、 属性が RunInstallerAttributetrue設定されます。

オプションのプロパティは、インストーラーがコレクションに追加される前に、プロセス インストーラーとサービス インストーラーで Installers 設定されます。 インストール ユーティリティが MyProjectInstaller にアクセスすると、 の呼び出しInstallerCollection.AddによってコレクションにInstallers追加されたオブジェクトが順番にインストールされます。 このプロセス中、インストーラーは、インストールされているオブジェクトを示す状態情報を保持するため、インストールエラーが発生した場合に各オブジェクトを順番にバックアウトできます。

通常は、プロジェクト インストーラー クラスを明示的にインスタンス化しません。 これを作成して を RunInstallerAttribute追加しますが、インストール ユーティリティは実際には クラスを呼び出してインスタンス化します。

#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;

[RunInstaller(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 );
    }

    static void Main()
    {
        Console::WriteLine("Usage: InstallUtil.exe [<service>.exe]");
    }
};

int main()
{
    MyProjectInstaller::Main();
}
using System;
using System.Collections;
using System.Configuration.Install;
using System.ServiceProcess;
using System.ComponentModel;

[RunInstaller(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);
    }

    public static void Main()
    {
        Console.WriteLine("Usage: InstallUtil.exe [<service>.exe]");
    }
}
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

    Public Shared Sub Main()
        Console.WriteLine("Usage: InstallUtil.exe [<service>.exe]")
    End Sub
End Class

注釈

ServiceProcessInstaller 、実行可能ファイル内のすべてのサービスに共通して機能します。 インストール ユーティリティは、インストールするサービスに関連付けられているレジストリ値を書き込む目的で使用されます。

サービスをインストールするには、 から Installer継承するプロジェクト インストーラー クラスを作成し、 クラスの を RunInstallerAttributetrue設定します。 プロジェクト内で、サービス アプリケーションごとに 1 つの ServiceProcessInstaller インスタンスをインスタンス化し、アプリケーション内のサービスごとに 1 つの ServiceInstaller インスタンスをインスタンス化します。 最後に、インスタンスと インスタンスをServiceInstallerプロジェクト インストーラー クラスに追加ServiceProcessInstallerします。

InstallUtil.exe実行すると、 ユーティリティは、 が に設定されたサービス アセンブリ内のクラスをRunInstallerAttributetrue検索します。 クラスをサービス アセンブリに追加するには、プロジェクト インストーラーに関連付けられているコレクションに Installers クラスを追加します。 が falseの場合RunInstallerAttribute、インストール ユーティリティはプロジェクト インストーラーを無視します。

ServiceProcessInstallerインスタンスの場合、変更できるプロパティには、ログオンしているユーザー以外のアカウントでサービス アプリケーションを実行することを指定するなどがあります。 サービスを実行する特定 Username のペアと Password ペアを指定することも、 を使用 Account して、コンピューターのシステム アカウント、ローカルまたはネットワーク サービス アカウント、またはユーザー アカウントでサービスを実行するように指定することもできます。

注意

コンピューターのシステム アカウントが管理者アカウントと同じではありません。

通常、コード内で メソッド ServiceInstaller を呼び出すわけではありません。通常、これらはインストール ユーティリティによってのみ呼び出されます。 インストール ユーティリティは、インストール プロセス中に ServiceProcessInstaller.Install メソッドと ServiceInstaller.Install メソッドを自動的に呼び出します。 必要に応じて、以前にインストールされたすべてのコンポーネントで (または ServiceInstaller.Rollback) を呼び出Rollbackして、エラーをバックアウトします。

アプリケーションのインストール ルーチンでは、プロジェクト インストーラーの を使用して、既にインストールされているコンポーネントに関する情報が Installer.Context自動的に保持されます。 この状態情報はインスタンスとして ServiceProcessInstaller 継続的に更新され、各 ServiceInstaller インスタンスはユーティリティによってインストールされます。 通常、コードでこの状態情報を明示的に変更する必要があります。

ServiceProcessInstaller インスタンス化すると、基底クラス コンストラクター である ComponentInstallerが呼び出されます。

コンストラクター

ServiceProcessInstaller()

ServiceProcessInstaller クラスの新しいインスタンスを作成します。

プロパティ

Account

サービス アプリケーションを実行するときに使用するアカウントの種類を取得または設定します。

CanRaiseEvents

コンポーネントがイベントを発生させることがきるかどうかを示す値を取得します。

(継承元 Component)
Container

IContainer を含む Component を取得します。

(継承元 Component)
Context

現在のインストールに関する情報を取得または設定します。

(継承元 Installer)
DesignMode

Component が現在デザイン モードかどうかを示す値を取得します。

(継承元 Component)
Events

Component に結び付けられているイベント ハンドラーのリストを取得します。

(継承元 Component)
HelpText

サービスのインストール オプションに関する情報を表示するヘルプのテキストを取得します。

Installers

インストーラーが格納しているインストーラーのコレクションを取得します。

(継承元 Installer)
Parent

インストーラーが属しているコレクションを格納しているインストーラーを取得または設定します。

(継承元 Installer)
Password

サービス アプリケーションを実行するときに使用するユーザー アカウントに関連付けられたパスワードを取得または設定します。

Site

ComponentISite を取得または設定します。

(継承元 Component)
Username

サービス アプリケーションを実行するときに使用するユーザー アカウントを取得または設定します。

メソッド

Commit(IDictionary)

派生クラスによってオーバーライドされた場合、インストール トランザクションを完了します。

(継承元 Installer)
CopyFromComponent(IComponent)

CopyFromComponent(IComponent) クラス固有の動作を行わない、基本クラスの ServiceProcessInstaller メソッドを実装します。

CreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。

(継承元 MarshalByRefObject)
Dispose()

Component によって使用されているすべてのリソースを解放します。

(継承元 Component)
Dispose(Boolean)

Component によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。

(継承元 Component)
Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetLifetimeService()
古い.

対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。

(継承元 MarshalByRefObject)
GetService(Type)

Component またはその Container で提供されるサービスを表すオブジェクトを返します。

(継承元 Component)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
InitializeLifetimeService()
古い.

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。

(継承元 MarshalByRefObject)
Install(IDictionary)

サービス アプリケーション情報をレジストリに書き込みます。 このメソッドは、セットアップ ツールで使用されます。セットアップ ツールは適切なメソッドを自動的に呼び出します。

IsEquivalentInstaller(ComponentInstaller)

指定したインストーラーが、対象のインストーラーと同じオブジェクトをインストールするかどうかを確認します。

(継承元 ComponentInstaller)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
MemberwiseClone(Boolean)

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。

(継承元 MarshalByRefObject)
OnAfterInstall(IDictionary)

AfterInstall イベントを発生させます。

(継承元 Installer)
OnAfterRollback(IDictionary)

AfterRollback イベントを発生させます。

(継承元 Installer)
OnAfterUninstall(IDictionary)

AfterUninstall イベントを発生させます。

(継承元 Installer)
OnBeforeInstall(IDictionary)

BeforeInstall イベントを発生させます。

(継承元 Installer)
OnBeforeRollback(IDictionary)

BeforeRollback イベントを発生させます。

(継承元 Installer)
OnBeforeUninstall(IDictionary)

BeforeUninstall イベントを発生させます。

(継承元 Installer)
OnCommitted(IDictionary)

Committed イベントを発生させます。

(継承元 Installer)
OnCommitting(IDictionary)

Committing イベントを発生させます。

(継承元 Installer)
Rollback(IDictionary)

インストール プロシージャによってレジストリに書き込まれたサービス アプリケーション情報をロールバックします。 このメソッドは、セットアップ ツールで使用されます。セットアップ ツールは適切なメソッドを自動的に処理します。

ToString()

Component の名前 (存在する場合) を格納する String を返します。 このメソッドはオーバーライドできません。

(継承元 Component)
Uninstall(IDictionary)

派生クラスによってオーバーライドされた場合、インストール内容を削除します。

(継承元 Installer)

イベント

AfterInstall

Installers プロパティ内のすべてのインストーラーの Install(IDictionary) メソッドが実行された後で発生します。

(継承元 Installer)
AfterRollback

Installers プロパティ内のすべてのインストーラーによるインストールがロールバックされた後で発生します。

(継承元 Installer)
AfterUninstall

Installers プロパティ内のすべてのインストーラーのアンインストールが実行された後で発生します。

(継承元 Installer)
BeforeInstall

インストーラー コレクション内の各インストーラーの Install(IDictionary) メソッドが実行される前に発生します。

(継承元 Installer)
BeforeRollback

Installers プロパティ内のインストーラーがロールバックされる前に発生します。

(継承元 Installer)
BeforeUninstall

Installers プロパティ内のインストーラーのアンインストールが実行される前に発生します。

(継承元 Installer)
Committed

Installers プロパティ内のすべてのインストーラーがインストールをコミットした後で発生します。

(継承元 Installer)
Committing

Installers プロパティ内のインストーラーがインストールをコミットする前に発生します。

(継承元 Installer)
Disposed

Dispose() メソッドの呼び出しによってコンポーネントが破棄されるときに発生します。

(継承元 Component)

適用対象

こちらもご覧ください