1. ホーム
  2. c#

[解決済み] Visual Studioで作成したWindowsサービスをインストールする

2022-02-18 03:28:52

質問

Visual Studio 2010 で新しい Windows サービスを作成すると、InstallUtil と net start を使用してサービスを実行するようにというメッセージが表示されます。

以下の手順を試してみました。

  1. 新規プロジェクトの作成 File -> New -> Project -> Windows Service
  2. プロジェクト名 TestService
  3. プロジェクトをそのままビルド(Service1コンストラクタ、OnStart、OnStop)
  4. コマンドプロンプトを開き、以下を実行します。 C:³³³³³.exe; TestService.exe
  5. 実行 net start TestService .

ステップ4の出力

トランザクテッドインストールを実行する。

インストールのフェーズを開始します。

のログファイルの内容をご覧ください。 C:\UsersmyusernameVisual Studio 2010Projects ◇TestService ◇obj ◇Debug ◇TestService.exe アセンブリの進行状況を表示します。

このファイルは、C:³³³³にあります。 2010Projects tServiceTestServiceobjDebugTestService.InstallLog.

Installing assembly 'C:\UsersmyusernameVisual Studio 2010ProjectsTestServiceTestServiceobjx86DebugTestService.exe'をインストールした。

影響を受けるパラメータは以下の通りです。

logtoconsole =

logfile = C:\Usersmyusername﹑Documents﹑Visual Studio 2010ProjectsTestServiceT estServiceobj ↵DebugTestService.InstallLog

assemblypath = C:\Usersmyusername﹑Documents﹑Visual Studio 2010ProjectsTestServiceTestService.exe

RunInstallerAttribute.Yes 属性を持つパブリックインストーラはありません。 は、C:³³³ にあります。 2010Projects ○TestService ○TestSe rvice ○obj ○Debug ○TestService.exe アセンブリを作成します。

インストール・フェーズが正常に終了し、コミット・フェーズが開始されました。 を開始します。

のログファイルの内容をご覧ください。 C:\UsersmyusernameVisual Studio 2010Projects ¡TestService¡obj ¡x86¡Debug¡TestService.exe アセンブリの進行状況を表示します。

このファイルは、C:³³³³にあります。 2010Projects tServiceTestServiceobjDebugTestService.InstallLog.

アセンブリのコミット 'C:\UsersersmyusernameVisual Studio 2010Projects ▶TestService ▶TestServiceobjx86DebugTestService.exe

影響を受けるパラメータは以下の通りです。

logtoconsole =

logfile = C:\Usersmyusername﹑Documents﹑Visual Studio 2010ProjectsTestServiceT estServiceobj ↵DebugTestService.InstallLog

assemblypath = C:\Usersmyusername﹑Documents﹑Visual Studio 2010ProjectsTestServiceTestService.exe

RunInstallerAttribute.Yes 属性を持つパブリックインストーラはありません。 は、C:³³³ にあります。 2010Projects ○TestService ○TestSe rvice ○obj ○Debug ○TestService.exe アセンブリを作成します。

インストーラーがないため、InstallStateファイルを削除します。

コミット・フェーズが正常に終了しました。

トランザクテッドインストールが完了しました。

ステップ5の出力

サービス名が無効です。

NET HELPMSG 2185 と入力すると、さらに詳しいヘルプが表示されます。

解決方法は?

デザイナーでService.csファイルを開き、右クリックしてメニューから「Add Installer"」を選択する必要があります。

いきなりインストールされるわけではありません。まず、インストーラークラスを作成する必要があります。

サービスインストーラに関する参考文献です。

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

かなり古いですが...こんな感じです。

C#で作るWindowsサービス。インストーラの追加 (その3)

こうすることで ProjectInstaller.cs が自動的に作成されます。これをダブルクリックすると、デザイナーに入り、コンポーネントを設定することができます。

  • serviceInstaller1 には、サービス自体のプロパティがあります。 Description , DisplayName , ServiceNameStartType が最も重要です。

  • serviceProcessInstaller1 にはこのような重要な性質があります。 Account は、サービスが実行されるアカウントです。

例えば

this.serviceProcessInstaller1.Account = ServiceAccount.LocalSystem;