web-dev-qa-db-ja.com

インストール後にWindowsサービスがサービスリストに表示されない

Visual Studio 2008を使用して、C#でWindowsサービスを作成しました。ほとんどこれに従いました。 http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

記事の指示に従ってセットアッププロジェクトを作成し、実行しました... c:\ program files\productなどにサービスをインストールしますが、その後、サービスリストには表示されません。

何が欠けていますか?

54
Alex

リンクした記事の最も重要な部分はこちらです

セットアッププロジェクトにカスタムアクションを追加するには

1.ソリューションエクスプローラーで、セットアッププロジェクトを右クリックし、[表示]をポイントして、[カスタムアクション]を選択します。カスタムアクションエディタが表示されます。

2.カスタムアクションエディターで、[カスタムアクション]ノードを右クリックし、[カスタムアクションの追加]を選択します。プロジェクトの選択項目ダイアログボックスが表示されます。

3.リストボックスのアプリケーションフォルダをダブルクリックして開き、MyNewService(アクティブ)からプライマリ出力を選択して、[OK]をクリックします。プライマリ出力は、カスタムアクションの4つのノードすべてに追加されます。インストール、コミット、ロールバック、およびアンインストール。

4.セットアッププロジェクトをビルドします。

これらの手順をスキップすると、セットアッププロジェクトがビルドされ、ファイルが正しいディレクトリにコピーされます。ただし、これらの手順を実行しないと、バイナリはサービスとして登録されません。


また、組み込みのセットアップ/展開プロジェクトテンプレートがある/持っているVisual Studioの古いバージョンでも機能することに注意してください。 Visual Studioの新しいバージョンには、異なるセットアップ/展開プロジェクトがあります(サードパーティソフトウェアが必要なものもあります)。

WiXツールセット を調べ、 WindowsサービスのWiXインストール を確認することをお勧めします

105
Nate

私はこれに顔を所有しているので、他の誰かがそれに出くわした場合に備えて、ここに置いています。

ガイドの指示に従ったが、それでもインストールに問題がある場合は、インストーラークラスがパブリックであることを確認してください。内部は機能しません。

6
xofz

これと同じ問題が発生し、ServiceInstallerの親を設定しないことに気付きました。

プロジェクトインストーラーをダブルクリックします。デザイナーは、サービスインストーラーとプロセスインストーラーを表示する必要があります。いずれかをクリックしてプロパティを表示する場合、プロジェクトインストーラのクラス名に設定する必要があるParent属性に注意する必要があります。

または、コードで行う場合は、必ず以下を設定してください。

serviceInstaller.Parent = this;

そして

serviceProcessInstaller.Parent = this;
6
cbillowes

サービスをインストールするとき、 [〜#〜] nssm [〜#〜] を使用することを強くお勧めします。任意の実行可能ファイル(.bat、.cmdであっても)をサービスとしてインストールでき、サービスが常に稼働していることを保証します。

このツールを使用するには:

  1. こちら からダウンロード

  2. そして、指示に従ってください こちら

次に、サービスリストを確認します。サービスリストが表示され、実行されているはずです。

3
Zafar

これらの指示に従ってください、彼らは私のために働いた。具体的には、その部分は記事の下部にあります。

MSDN:チュートリアル:Windowsサービスの作成

1
Jon Seigel

インストーラークラスが、サービスと同じプロジェクト内にあることがわかりました。インストーラーは、サービスによって参照されるライブラリプロジェクトに存在できません。

0
kspearrin

CodeProject.comのtgeek001の役立つチュートリアルを紹介します。上記の投稿には見られなかったいくつかの項目が含まれています。1.サービスをアンインストールする前に停止するイベントハンドラーコード上記の受け入れられた答えの指示に従っている間に経験したこと)

http://www.codeproject.com/Tips/575177/Window-Service-Deployment-using-VS

以下は、カスタムアクション設定のチュートリアルからのものです(ケースの問題):

  • インストールし、Conditionプロパティを次のように設定します。「NOT(Installed or PREVIOUSVERSIONSINSTALLED)」
  • アンインストールし、Conditionプロパティを「NOT UPGRADINGPRODUCTCODE」に設定します
  • コミット:「カスタムアクションデータ」フィールドを/ OldProductCode = "[PREVIOUSVERSIONSINSTALLED]"に設定します

最後に、WinServiceプロジェクトで、[以前のバージョンを削除]ドロップダウンをtrueに設定してください。

乾杯

0
sondlerd

Visual Studio 2013では、サービスアプリケーションにInstallShieldテンプレートを使用して同じ問題に遭遇しました。ただし、セットアッププロジェクトテンプレートを使用する場合は魅力的です https://visualstudiogallery.msdn.Microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d

したがって、セットアッププロジェクトテンプレートをダウンロードしてStudioを閉じ、このインストールを実行してStudioを起動すると、これが機能します。

ダン.

0
Dung