問題
インストール中にWindowsサービスを作成および開始し、アンインストール中にサービスを停止および削除するMSIがあります。これは、単独でインストールおよびアンインストールする場合は正常に機能しますが、アップグレードすると、 [使用中のファイル]ダイアログが表示され(新しいRestart Managerのため、Vista以降のみ)、サービスが使用中であることを示します。
バックグラウンド
[使用中のファイル]ダイアログは、 InstallValidateカスタムアクションによるInstallExecuteシーケンス中に表示されます。これは、 RemoveExistingProductsカスタムアクションの直前にスケジュールされます。これは、以前のバージョンがまだアンインストールされていないことを意味するため、 [使用中のファイル]ダイアログが表示されます。
MSDNのドキュメントには、RemoveExistingProductsアクションをInstallValidateアクションの後にスケジュールする必要があることが示されています。現在、RemoveExistingProductsアクションはInstallValidateアクションの直後にスケジュールされています。
考えられる解決策
RemoveExistingProductsカスタムアクションをInstallValidateカスタムアクションの直前に再スケジュールして、以前のインストールで[使用中のファイル]ダイアログが表示される前にサービスを停止して削除できるようにします。アクションのスケジュールを変更しようとしましたが、悪影響はなく正常に機能しているようです(ただし、ログには、 RemoveExistingProductsアクションの前にInstallValidateアクションが実行されることが示されています)が、MSDNドキュメントに違反しているため、このソリューションの使用を躊躇しています。 、そして私がまだ見ていなかった悪影響があるかもしれません。
誰かがこれを試しましたか?私が考えることができる他の唯一の選択肢は、新しいインストールで古いインストールのサービスを停止することですが、アップグレードできるすべての古いインストールに関する情報がインストールに必要になるため、これは望ましくありません(この特定のサービスを停止すると、より多くの情報が必要になる場合があります) Service Managerを呼び出して停止するだけではありません)。