MSI はアップグレード インストール時に必要なアセンブリを削除しますが、修理時に交換します。
-
19-09-2019 - |
質問
MSI インストールのアップグレードに関連していくつかの奇妙な現象が発生しています。おそらく誰かが私を助けてくれるでしょう。
オリジナルとアップグレードの 2 つの MSI があります。
- MSI バージョン 1.0
- GAC にインストールされる .NET アセンブリ foo.dll が含まれています
- foo.dll は、MSI ファイル システム GUI 内では (「出力」ではなく) 「アセンブリ」タイプです。
- MSI バージョン 2.0
- foo.dll (同じバージョン) に加えて、追加のアセンブリも含まれています。
- MSI 2.0 で 1.0 を完全に置き換えたいので、RemovePerviousVersion を False に設定しました。
2 つのインストール シナリオは次のとおりです。
MSI 1.0を実行しています。Foo.dll が GAC に正しくインストールされています。次に MSI 2.0 を実行し、 Foo.dll が GAC から削除されたようです, 、ただし追加のアセンブリは存在します。方法がわかりません。ただし、[プログラムの追加と削除] に移動して [修復] をクリックすると、Foo.dll が挿入されます。
MSI 1.0 はインストールされず、MSI 2.0 を実行します。Foo.dll (および追加のアセンブリ) は 予想通り、そこにあります。
foo.dll がアップグレード中に削除される理由はありますか??前もって感謝します!
-ケン
アップデート リフレッシュ/再構築を行った後、現在は動作しているようです。ただし、MSI をアンインストールしても、プロパティ「Permanent」が false に設定されているにもかかわらず、foo.dll は削除されなくなりました。それほど大きな問題ではありませんが、何が起こっているのかを知るのは良いことです。
解決
奇妙さを修正するために、最終的に次のことを行いました。
- Windows SDK の一部である Orca.exe をインストールしました。
- ビルド後に Orca 経由で REINSTALLMODE=amus をプロパティ テーブルに追加しました。
これにより当面の問題が解決され、発生していたインストール/アンインストールの問題が修正されました。唯一の問題は、これが手動のプロセスであることです。次のステップでは、これを何らかの方法で自動ビルド後イベントの一部にします。
所属していません StackOverflow