0

新しいMSIを使用してソリューションをバージョン1からバージョン2にアップグレードすると、アプリケーションを構成するカスタム動作の1つがOnCommitアクションのバージョン1に属する値を使用していましたアップグレードは以前のインストーラのOnCommitカスタムアクションを使用します

メッセージボックスとログを追加してアセンブリバージョンを印刷し、アップグレード中にWindowsインストーラが以前のMSIのDLLを使用していることを確認しました。ただし、新しいMSIを手動でインストールする場合、正しいカスタムアクションが使用されます。

これを回避する方法はありますか?以前のカスタムアクションを使用する理由について多くの情報が見つかりませんでしたか? ProductCodesが異なるながら

IはRemovePreviousVersions = trueUpgradeCodesセットは等しいです。

答えて

0

私は、これは古いバグであると信じています:

https://support.microsoft.com/en-us/kb/555184

、それについて他のサポート記事は、私が見つけることができないことがあります。古いバージョンのセットアッププロジェクトに適用されるため、削除されている可能性があります。私は迂回路がアセンブリの名前を変更し、アセンブリバージョンを変更するようなものだと思います。

アンインストーラがアンインストールを実行するためにアンインストールされ、アップグレードインストールのアセンブリがこの状況(リフレクションローディング)でロードルールが決定する限り同じであることが原因です新しいアセンブリは読み込まれませんが、既に読み込まれている古いアセンブリが使用されます。これはすべて、古い製品をアンインストールしてから新しいものをインストールする非常に古いバージョンのVisual Studioセットアッププロジェクトを使用していることを意味します。これはVisual Studio 2008以降のデフォルトの動作ではないため、新しいバージョンで問題が発生するとは思われません。

関連する問題