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 のすべてのオーバーライドされたメソッドのどこにもありません。
この例外をキャッチする方法や、サービスのインストール中に実行される完全なワークフローのより良いビューについて、ヒントを教えてもらえますか??
ありがとう