1

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 のすべてのオーバーライドされたメソッドのどこにもありません。

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

ありがとう

4

1 に答える 1

0

InstallUtil ソース コードを調べたところ、/LogFile パラメーターを適切な場所で慎重に使用すると、インスタンスを実行することによって専用のログ ファイルを作成できることがわかりました。私たちのテスト シナリオでは、コマンド ラインが適切に構成されておらず、LogFile パラメータが無視されていました...

于 2016-03-29T15:45:19.837 に答える