問題タブ [installutil]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1432 参照

windows-services - Windows サービスのカスタム イベント ログ

プロジェクト インストーラーで、カスタム イベント ログを作成しています。しかし、サービスが開始されると、すべてのログがカスタム ログではなく「アプリケーション」に記録されます。以下は、インストーラーに追加したコードです。

さらに、サービスの名前は MyService.exe です。

サービスをアンインストールして再インストールすると、次のインストール ログでインストールが失敗します。

トランザクション インストールの実行。

インストールのインストール フェーズの開始。D:\MyService\MyService\bin\Release\MyService.exe アセンブリの進行状況については、ログ ファイルの内容を参照してください。このファイルは、D:\MyService\MyService\bin\Release\MyService.InstallLog にあります。

インストール フェーズ中に例外が発生しました。System.ArgumentException: ソース MyServices は既にローカル コンピューターに存在します。

インストールのロールバック フェーズが開始されます。D:\MyService\MyService\bin\Release\MyService.exe アセンブリの進行状況については、ログ ファイルの内容を参照してください。このファイルは、D:\MyService\MyService\bin\Release\MyService.InstallLog にあります。

ロールバック フェーズが正常に完了しました。

トランザクションのインストールが完了しました。

そして、これがログエントリの書き方です。

EventLog.WriteEntry("MyServices", logMessage, logType);

誰かが私が何をしているのか教えてください。

0 投票する
1 に答える
3120 参照

c# - Windows サービスのインストールでの InvalidOperationException

私は数か月前に開発した Windows サービス アプリを持っていますが、遠く離れた Windows Server 2012 でも問題なく動作していました。しかし、マイナー アップデートの後、サーバーに再インストールする必要がありました。このサーバー、エラーが発生します。完全なコマンド ライン ダイアログは次のとおりです。

アセンブリ 'c:\Program Files\My Company\MyServiceApp\MyServiceApp.exe' をインストールしています。影響を受けるパラメータは次のとおりです。

logtoconsole =
assemblypath = c:\Program Files\My Company\MyServiceApp\MyServiceApp.exe
ログファイル = c:\Program Files\My Company\MyServiceApp\MyServiceApp.InstallLog

サービス SendHistoryService をインストールしています...
サービス SendHistoryService が正常にインストールされました。
EventLog ソース SendHistoryService をログ アプリケーションに作成しています...
System.ServiceProcess.ServiceInstaller の OnAfterInstall イベント ハンドラで例外が発生しました。
System.InvalidOperationException: コンピューター '.' でサービス SendHistoryService を開始できません。
内部例外 System.ComponentModel.Win32Exception がスローされ、次のエラー メッセージが表示されました: サービスは開始要求または制御要求にタイムリーに応答しませんでした。
アセンブリ 'c:\Program Files\My Company\MyServiceApp\MyServiceApp.exe' をロールバックしています。
影響を受けるパラメータは次のとおりです。

logtoconsole =
assemblypath = c:\Program Files\My Company\MyServiceApp\MyServiceApp.exe
ログファイル = c:\Program Files\My Company\MyServiceApp\MyServiceApp.InstallLog

ソース SendHistoryService のイベント ログを以前の状態に復元しています。
サービス SendHistoryService はシステムから削除されています...
サービス SendHistoryService はシステムから正常に削除されました。

サービス インストーラーは、私のローカル マシン (W8.1) でも完全に動作することに注意してください。インストーラーには、実際には "SendHistoryService" と "GeneratorService" という 2 つの個別のサービスが含まれていますが、ご覧のとおり、インストーラーは最初のインストールを試行中に失敗します。関連性がある場合、プロセスは次の行で約 30 秒間スタックします。

もちろん、私が最初にチェックしたのは OnAfterInstall イベント ハンドラですが、そこでは何も問題が発生していないようです。

ここで何が起こっているのか本当に理解できません。どんな手掛かり ?

編集: ProjectInstaller クラスでサービスを開始する行にコメントを付けてみました。これでインストールは正常に実行されますが、サービスを開始しようとすると失敗し、次のエラー メッセージが表示されます。

Windows は、ローカル コンピューターで SendHistoryService サービスを開始できませんでした。

エラー 1053: サービスは開始要求または制御要求にタイムリーに応答しませんでした。

0 投票する
1 に答える
309 参照

c# - デバッグ フォルダーにインストールすると、Windows サービスが開始してから停止する

セルフホスティング WCF サービスがあります。Windows サービスによってホストされます。installutilでインストールしました。したがって、bin フォルダーには、Debug と Release の 2 つのフォルダーがあります。リリース フォルダーに windowsservice をインストールすると、通常どおり起動し、WCF サービスをホストしますが、デバッグ フォルダーにインストールすると起動しません。次のエラー メッセージが表示されます。

「ローカル コンピューターのサービスが開始されてから停止しました。他のサービスまたはプログラムによって使用されていない場合、一部のサービスは自動的に停止します。」

誰かがこれを修正する方法を知っていますか?

0 投票する
1 に答える
166 参照

c# - InstallUtil ワークフローで例外をキャッチ

C# コードで、installUtil を使用したサービスのインストール中にエラーが発生しました。独自のインストーラーを使用しています。インストールは 90% のケースで正常に動作するため、インストーラーのすべてのコードと installUtil のパラメーターは正常です。失敗するシナリオは私の CI ジョブの下にあります。同じコードを使用して複数のサービスを並行してインストールしていますが、例外をキャッチできません。私が持っているのは、次のメッセージをログに記録することだけです:

System.Configuration.Install.AssemblyInstaller インストーラーのコミット フェーズ中に例外が発生しました。System.InvalidOperationException: コレクションが変更されました。列挙操作が実行されない場合があります。インストールのコミット段階で例外が発生しました。この例外は無視され、インストールが続行されます。ただし、インストールの完了後、アプリケーションが正しく機能しない場合があります。

私は自分のインストーラークラスで、オーバーライドできるすべてのフェーズとメソッドの間にログを記録しました。また、System.Configuration.Install.Installer のソースコードをいくつか取得しました。そこにもログを記録していますが、何も記録していません...

Install メソッドの後、Commit の前に例外が発生しています。

System.Configuration.Install.Installer のコミット フェーズの実行の直前に、次のようなコードが出力されます。

次のようにログに記録します。

インストール フェーズが正常に完了し、コミット フェーズが開始されます。ログ ファイルの内容を参照してください... アセンブリをコミットしています .... 影響を受けるパラメータは次のとおりです: ... System.Configuration.Install.AssemblyInstaller のコミット フェーズ中に例外が発生しました... コミット フェーズは正常に完了しました。トランザクションのインストールが完了しました。インストールのコミット段階で例外が発生しました。

ご覧のとおり、例外はインストール フェーズの後、コミット フェーズの前に発生しますが、カスタム インストーラー クラスまたは System.Configuration.Install.Installer のすべてのオーバーライドされたメソッドのどこにもありません。

この例外をキャッチする方法や、サービスのインストール中に実行される完全なワークフローのより良いビューについて、ヒントを教えてもらえますか??

ありがとう

0 投票する
1 に答える
19058 参照

c# - Windows サービスの TCP IP リスナー

バックグラウンドで実行し、着信トラフィックをリッスンする必要がある Windows サービスを作成しようとしています (通常および通常の TCP リスナー)

私のコードは次のとおりです。

今、私が自分のサービスを開始するたびに私のサービスを開始しようとするたびにフリーズするので、作業方法をまったく見ていない場合:

つまり、サービスが Thread または Work メソッドを使用することはありません。以前のログから、while ループに入り、サービスがタイムアウトすることがわかります。

0 投票する
0 に答える
61 参照

c# - 同じマシンで複数の .net サービスを実行する方法

同じマシンで複数回実行する必要がある .Net サービスがあります。私のexeファイルとサポートファイルは、c:\folder1\とc:\folder2\の2つの異なるフォルダーにあります。

しかし、次のいずれかを発行すると、ServiceName が希望どおりに変更されません。

サービスが作成されていない場合、InstallUtil はサービスを登録しますが、指定した serviceName には登録しません。

サービスが登録されている場合 (たとえば、folder1 サービス)、InstallUtil は、「指定されたサービスが既に存在する」というフォルダー2 の登録でエラーになります。

sc コマンドは、構文が間違っているかのように、sc コマンドのヘルプ情報のみを表示します。

同じマシンで同じサービスを複数回登録する適切な方法は何ですか?