MSI はアップグレード インストール時に必要なアセンブリを削除しますが、修理時に交換します。

StackOverflow https://stackoverflow.com/questions/1889422

  •  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 つのインストール シナリオは次のとおりです。

  1. MSI 1.0を実行しています。Foo.dll が GAC に正しくインストールされています。次に MSI 2.0 を実行し、 Foo.dll が GAC から削除されたようです, 、ただし追加のアセンブリは存在します。方法がわかりません。ただし、[プログラムの追加と削除] に移動して [修復] をクリックすると、Foo.dll が挿入されます。

  2. MSI 1.0 はインストールされず、MSI 2.0 を実行します。Foo.dll (および追加のアセンブリ) 予想通り、そこにあります。

foo.dll がアップグレード中に削除される理由はありますか??前もって感謝します!

-ケン

アップデート リフレッシュ/再構築を行った後、現在は動作しているようです。ただし、MSI をアンインストールしても、プロパティ「Permanent」が false に設定されているにもかかわらず、foo.dll は削除されなくなりました。それほど大きな問題ではありませんが、何が起こっているのかを知るのは良いことです。

役に立ちましたか?

解決

奇妙さを修正するために、最終的に次のことを行いました。

  1. Windows SDK の一部である Orca.exe をインストールしました。
  2. ビルド後に Orca 経由で REINSTALLMODE=amus をプロパティ テーブルに追加しました。

これにより当面の問題が解決され、発生していたインストール/アンインストールの問題が修正されました。唯一の問題は、これが手動のプロセスであることです。次のステップでは、これを何らかの方法で自動ビルド後イベントの一部にします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top