方法: サービス アプリケーションにインストーラーを追加する

警告

このドキュメントは、最新版の Windows サービスは対象としていません。 BackgroundService を使用した Windows サービスの最新のコンテンツと Worker サービス テンプレートについては、次を参照してください。

Visual Studio には、サービス アプリケーションに関連付けられているリソースをインストールできるインストール コンポーネントが付属しています。 インストール コンポーネントは、個々のサービスをインストール先のシステムに登録し、サービス コントロール マネージャーにサービスが存在することを認識させます。 サービス アプリケーションを操作するときは、[プロパティ] ウィンドウでリンクを選択して、適切なインストーラーをプロジェクトに自動的に追加することができます。

Note

サービスに対するプロパティの値は、サービス クラスからインストーラー クラスにコピーされます。 サービス クラスでプロパティの値を更新した場合、インストーラーでは自動的には更新されません。

インストーラーをプロジェクトに追加すると、新しいクラス (既定の名前は ProjectInstaller) がプロジェクトに作成され、その中に適切なインストール コンポーネントのインスタンスが作成されます。 このクラスは、プロジェクトで必要なすべてのインストール コンポーネントの中心的な場所として機能します。 たとえば、2 番目のサービスをアプリケーションに追加し、[インストーラーの追加] リンクをクリックしても、2 番目のインストーラー クラスは作成されません。代わりに、2 番目のサービスに必要な追加のインストール コンポーネントは、既存のクラスに追加されます。

サービスが正しくインストールされるようにするために、インストーラー内で特殊なコーディングを行う必要はありません。 ただし、インストール プロセスに特別な機能を追加する必要がある場合は、インストーラーの内容の変更が必要になることがあります。

Note

実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、 [ツール] メニューの [設定のインポートとエクスポート] をクリックします。 詳細については、「Visual Studio IDE のカスタマイズ」を参照してください。

サービス アプリケーションにインストーラーを追加するには

  1. ソリューション エクスプローラーで、インストール コンポーネントを追加するサービスの [デザイン] ビューにアクセスします。

  2. デザイナーの背景をクリックして、サービスの内容ではなくサービス自体を選択します。

  3. デザイナーにフォーカスを置いた状態で右クリックし、 [インストーラーの追加] をクリックします。

    新しいクラス ProjectInstaller、および 2 つのインストール コンポーネント ServiceProcessInstallerServiceInstaller がプロジェクトに追加され、サービスのプロパティ値がコンポーネントにコピーされます。

  4. ServiceInstaller コンポーネントをクリックし、ServiceName プロパティが、サービス自体の ServiceName プロパティと同じ値に設定されていることを確認します。

  5. サービスの開始方法を決定するには、ServiceInstaller コンポーネントをクリックし、StartType プロパティを適切な値に設定します。

    [値] 結果
    Manual インストールの後、サービスを手動で開始する必要があります。 詳細については、サービスを開始する」を参照してください。
    Automatic サービスは、コンピューターが再起動されるたびに、自動的に開始します。
    Disabled サービスは開始できません。
  6. サービスが実行するセキュリティ コンテキストを決定するには、ServiceProcessInstaller コンポーネントをクリックし、適切なプロパティ値を設定します。 詳細については、サービスのセキュリティ コンテキストを指定する」を参照してください。

  7. カスタム処理を実行する必要があるメソッドをオーバーライドします。

  8. プロジェクトの追加サービスごとに、手順 1 から 7 を実行します。

    Note

    プロジェクトの追加サービスごとに、新しい ServiceInstaller コンポーネントをプロジェクトの ProjectInstaller クラスに追加する必要があります。 手順 3 で追加した ServiceProcessInstaller コンポーネントは、プロジェクト内のすべての個別サービス インストーラーで動作します。

関連項目