58

Visual Studio 2008 を使用して C# で Windows サービスを作成しました: http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

記事の指示に従ってセットアップ プロジェクトを作成し、それを実行しました...サービスをインストールしますC:\Program Files\Product etc....が、サービス リストに表示されません..

私は何が欠けていますか?

4

9 に答える 9

113

リンクした記事の最も重要な部分はここにあります

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

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

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

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

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

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


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

WiX Toolsetを調べることをお勧めします。ここでは、WiX Installation of Windows Services を確認してください。

于 2009-10-13T14:08:16.957 に答える
7

私はこれに顔を向けられたので、他の誰かがそれに遭遇した場合に備えてここに置いています.

ガイドの指示に従ってもインストールの問題が解決しない場合は、Installer クラスが public であることを確認してください。内部は機能しません。

于 2010-03-11T20:12:20.523 に答える
6

私はこれと同じ問題を抱えていましたが、ServiceInstaller の親を設定したことがないことに気付きました。

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

または、コードで行う場合は、次のように設定してください。

serviceInstaller.Parent = this;

serviceProcessInstaller.Parent = this;
于 2011-07-18T12:13:45.590 に答える
1

これらの指示に従ってください、彼らは私のために働きました. 具体的なセットアップについては、その部分は記事の下部にあります。

MSDN: ウォークスルー: Windows サービスの作成

于 2009-10-13T14:00:56.900 に答える
0

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

Setup Project テンプレートをダウンロードして Studio を閉じ、このインストールを実行して Studio を起動すると、うまくいきます。

ダン。

于 2015-06-12T15:06:37.507 に答える
0

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

于 2017-08-28T18:55:52.050 に答える
0

これは、CodeProject.com の tgeek001 からの良いチュートリアルで、私を助けてくれました。上記の投稿では見られなかったことがいくつか含まれています。 1. アンインストールする前にサービスを停止するためのイベント ハンドラー コード 2. 失敗を防ぐために設定するカスタム アクション コードの特定の条件とプロパティ (これらはエラー 1001 を修正しました)上記の受け入れられた回答の指示に従っているときに経験したこと) 3. Win サービス プロパティの [以前のバージョンを削除] ドロップダウンを true に設定します。

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

以下は、カスタム アクション設定のチュートリアルからのものです (大文字と小文字が区別されます)。

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

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

乾杯

于 2015-09-28T13:32:18.713 に答える