de-vraag
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
 jkh
jkh
質問

Visual Studioで作成したWindowsサービスをインストールします。

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

次の手順を試しました。

1。 新しいプロジェクトファイルを作成->新規->プロジェクト-> Windowsサービス。 2。 プロジェクト名:TestService。 3。 そのままプロジェクトを構築します(Service1コンストラクター、OnStart、OnStop)。 4。 コマンドプロンプトを開き、 "C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ InstallUtil.exe" TestService.exe を実行します。 5。 net start TestService を実行します。

ステップ4の出力。

トランザクションインストールを実行します。 。 インストールのインストールフェーズを開始します。 。 ログファイルの内容を参照してください。 C:\ Users \ myusername \ Documents \ Visual Studio。 2010 \ Projects \ TestService \ TestService \ obj \ x86 \ Debug \ TestService.exe。 アセンブリの進捗状況。 。 ファイルはC:\ Users \ myusername \ Documents \ Visual Studioにあります。 2010 \ Projects \ Tes。 tService \ TestService \ obj \ x86 \ Debug \ TestService.InstallLog。 。 アセンブリ 'C:\ Users \ myusername \ Documents \ Visual Studioのインストール。 2010 \ Projects \ TestS ervice \ TestService \ obj \ x86 \ Debug \ TestService.exe '。 。 影響を受けるパラメーターは次のとおりです。 。 logtoconsole =。 。 logfile = C:\ Users \ myusername \ Documents \ Visual Studio。 2010 \ Projects \ TestService \ T。 estService \ obj \ x86 \ Debug \ TestService.InstallLog。 。 アセンブリパス= C:\ Users \ myusername \ Documents \ Visual Studio。 2010 \ Projects \ TestServ ice \ TestService \ obj \ x86 \ Debug \ TestService.exe。 。 RunInstallerAttribute.Yes属性を持つパブリックインストーラーはありません。 C:\ Users \ myusername \ Documents \ Visual Studioにあります。 2010 \ Projects \ TestService \ TestSe rvice \ obj \ x86 \ Debug \ TestService.exe。 組み立て。 。 インストールフェーズが正常に完了し、コミットフェーズが完了しました。 開始。 。 ログファイルの内容を参照してください。 C:\ Users \ myusername \ Documents \ Visual Studio。 2010 \ Projects \ TestService \ TestService \ obj \ x86 \ Debug \ TestService.exe。 アセンブリの進捗状況。 。 ファイルはC:\ Users \ myusername \ Documents \ Visual Studioにあります。 2010 \ Projects \ Tes。 tService \ TestService \ obj \ x86 \ Debug \ TestService.InstallLog。 。 コミットアセンブリ 'C:\ Users \ myusername \ Documents \ Visual Studio。 2010 \ Projects \ TestS ervice \ TestService \ obj \ x86 \ Debug \ TestService.exe '。 。 影響を受けるパラメーターは次のとおりです。 。 logtoconsole =。 。 logfile = C:\ Users \ myusername \ Documents \ Visual Studio。 2010 \ Projects \ TestService \ T。 estService \ obj \ x86 \ Debug \ TestService.InstallLog。 。 アセンブリパス= C:\ Users \ myusername \ Documents \ Visual Studio。 2010 \ Projects \ TestServ ice \ TestService \ obj \ x86 \ Debug \ TestService.exe。 。 RunInstallerAttribute.Yes属性を持つパブリックインストーラーはありません。 C:\ Users \ myusername \ Documents \ Visual Studioにあります。 2010 \ Projects \ TestService \ TestSe rvice \ obj \ x86 \ Debug \ TestService.exe。 組み立て。 。 インストーラーがないため、InstallStateファイルを削除します。 。 コミットフェーズは正常に完了しました。 。 トランザクションされたインストールが完了しました。

ステップ5の出力。

サービス名は無効です。

NET HELPMSG 2185と入力すると、さらにヘルプを利用できます。

133 2011-10-27T20:41:29+00:00 7
Yuval Itzchakov
Yuval Itzchakov
編集された質問 22日 11月 2014 в 2:53
プログラミング
service
windows
c#
windows-services
installutil
解決策・回答
Miguel Angelo
Miguel Angelo
27日 10月 2011 в 8:45
2011-10-27T20:45:56+00:00
さらに
ソース
編集
#13687340

デザイナーでService.csファイルを開き、右クリックしてメニューオプション[インストーラーの追加]を選択する必要があります。

すぐにインストールされません。.. 最初にインストーラクラスを作成する必要があります。

サービスインストーラーに関するいくつかの参照:。

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

かなり古い。.. しかし、これは私が話していることです:

C#のWindowsサービス:インストーラーの追加(パート3)。

これにより、「ProjectInstaller.cs」がオートマチックに作成されます。 次に、これをダブルクリックしてデザイナーに入り、コンポーネントを構成できます。

-serviceInstaller1にはサービス自体のプロパティがあります。 Description、 DisplayName、 ServiceName、および StartTypeが最も重要です。

-serviceProcessInstaller1には、この重要なプロパティがあります。 Accountは、サービスが実行されるアカウントです。

例:

this.serviceProcessInstaller1.Account = ServiceAccount.LocalSystem;
Jason Aller
Jason Aller
編集した答え 4日 8月 2018 в 5:49
235
0
James  Michael Hare
James Michael Hare
27日 10月 2011 в 8:45
2011-10-27T20:45:18+00:00
さらに
ソース
編集
#13687339

見る:

RunInstallerAttribute.Yes属性を持つパブリックインストーラーは、C:\ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestService \ TestSe rvice \ obj \ x86 \ Debug \ TestService.exeアセンブリで見つかりませんでした。

コードにインストーラークラスがない可能性があります。 これは、実行可能ファイルをサービスとしてインストールする方法を「installutil」に指示する「Installer」から継承するクラスです。

PS. 私はここに、自己インストール/デバッグ可能なWindowsサービステンプレートをいくつか持っています。これらのテンプレートは、コードをコピーまたは使用できます:デバッグ可能、自己インストールWindowsサービス。

James  Michael Hare
James Michael Hare
編集した答え 27日 10月 2011 в 8:50
11
0
 Carol
Carol
3日 11月 2016 в 7:48
2016-11-03T19:48:48+00:00
さらに
ソース
編集
#13687343

インストーラーを作成してそのエラーメッセージを取り除く別の方法を次に示します。 また、VS2015 Expressには「インストーラーの追加」メニュー項目がないようです。

クラスを作成して、以下のコードを追加し、参照System.Configuration.Install.dllを追加するだけです。

using System.Configuration.Install;
using System.ServiceProcess;
using System.ComponentModel;

namespace SAS
{
    [RunInstaller(true)]
    public class MyProjectInstaller : Installer
    {
        private ServiceInstaller serviceInstaller1;
        private ServiceProcessInstaller processInstaller;

        public MyProjectInstaller()
        {
            // Instantiate installer for process and service.
            processInstaller = new ServiceProcessInstaller();
            serviceInstaller1 = new ServiceInstaller();

            // The service runs under the system account.
            processInstaller.Account = ServiceAccount.LocalSystem;

            // The service is started manually.
            serviceInstaller1.StartType = ServiceStartMode.Manual;

            // ServiceName must equal those on ServiceBase derived classes.
            serviceInstaller1.ServiceName = "SAS Service";

            // Add installer to collection. Order is not important if more than one service.
            Installers.Add(serviceInstaller1);
            Installers.Add(processInstaller);
        }
    }
}
8
0
 fabriciorissetto
fabriciorissetto
29日 8月 2015 в 9:38
2015-08-29T21:38:29+00:00
さらに
ソース
編集
#13687341

2つの典型的な問題:

1。 ProjectInstallerクラスが欠落しています(@MiguelAngeloが指摘したように)。 2。 コマンドプロンプトは「管理者として実行」する必要があります。

 fabriciorissetto
fabriciorissetto
編集した答え 15日 3月 2016 в 11:01
5
0
John Archer
John Archer
28日 7月 2016 в 12:18
2016-07-28T12:18:07+00:00
さらに
ソース
編集
#13687342

別の考えられる問題(私が遭遇した):

ProjectInstallerクラスが publicであることを確認してください。 正直なところ、どのように正確に実行したかはわかりませんが、次のようなイベントハンドラを ProjectInstaller.Designer.csに追加しました。

this.serviceProcessInstaller1.BeforeInstall + = new System.Configuration.Install.InstallEventHandler(this.serviceProcessInstaller1_BeforeInstall);。

ProjectInstaller.csでハンドラー関数を作成する自動プロセス中に、クラスの定義が変更されたと思います。

パブリッククラスProjectInstaller:System.Configuration.Install.Installer。

に。

部分クラスProjectInstaller:System.Configuration.Install.Installer。

置換「パブリック」キーワードを「部分」に置き換えます。 したがって、それを修正するには、そうでなければなりません。

パブリックパーシャルクラスProjectInstaller:System.Configuration.Install.Installer。

Visual Studio 2013 Community editionを使用しています。

4
0
Sql Surfer
Sql Surfer
22日 1月 2017 в 6:02
2017-01-22T18:02:23+00:00
さらに
ソース
編集
#13687344

VS 2010および.NET 4.0以降のステルス変更。

  • RunInstallerAttribute.Yes属性を持つパブリックインストーラーが見つかりませんでした*。

.NETにはエイリアスの変更またはコンパイラのクリーンアップがあり、特定のケースに対するこの小さな調整が明らかになる場合があります。

次のコードがある場合...

RunInstaller(true)   // old alias  

更新する必要がある場合があります。

RunInstallerAttribute(true)  // new property spelling

これは、コンパイル時または実行時にカバーの下で変更されたエイリアスのようなものであり、このエラー動作を取得します。 上記のRunInstallerAttribute(true)への明示的な変更により、すべてのマシンのすべてのインストールシナリオで修正されました。

プロジェクトまたはサービスのインストーラーを追加したら、「古い」RunInstaller(true)を確認し、新しいRunInstallerAttribute(true)に変更します。

2
0
 Phlash
Phlash
26日 3月 2019 в 2:09
2019-03-26T14:09:32+00:00
さらに
ソース
編集
#13687345

私が遭遇したさらに別のキャッチ:インストーラー派生クラス(通常は ProjectInstaller)が名前空間階層の最上位にあることを確認します。別のパブリッククラス内でパブリッククラスを使用しようとしましたが、これにより同じ古いエラーが発生します。

  • RunInstallerAttribute.Yes属性を持つパブリックインストーラーが見つかりませんでした*。
1
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Roxana Elizabeth CASTILLO Avalos
登録済み 17時間前
2
Hideo Nakagawa
登録済み 1日前
3
Sergiy Tytarenko
登録済み 3日前
4
shoxrux azadov
登録済み 5日前
5
Koreets Koreytsev
登録済み 1週間前
ID
JA
KO
RO
RU
© de-vraag :年
ソース
stackoverflow.com
ライセンス cc by-sa 3.0 帰属