1

現場には1.0の製品があります。その製品のインストーラーを更新して、古いバージョンの上にインストールし、新しいバージョン2.0をインストールできるようにしようとしています。これを行うために、VisualStudio2010セットアッププロジェクトを使用しています。

UpgradeCodeを維持し、以前のバージョンの削除をtrueに設定すると、新しいインストーラーが古いバージョンに正常にインストールされ、古いバージョンが削除されます。

ただし、古いMSIのアンインストールは、新しいMSIのインストール後に行われるようです。両方のMSIは同じレジストリキーを展開します(それらを使用するコードは変更されていないため)...ただし、古いMSIがアンインストールされると、それらのレジストリキーが削除されます。そして、そのアンインストールは新しいMSIのインストール後に行われるため、これらのキーはなくなりました。

これを防ぐ簡単な方法はありますか?これはごく普通のユースケースのように見えますが、古いインストーラーがそれらを削除した場合に、これらのレジストリキーをどのように維持するのか理解できません。

編集:それで、私はプロセスの早い段階でRemoveExistingProductステップを移動する方法を理解しました。そして、私はダブルチェックしました-はい、VS2005では最初に行われ、2010年にはほぼ最後に行われました。古いアンインストーラーが新しいインストーラーが追加したものを削除した場合、彼らがどのように機能するかはわかりません...とにかく、Orcaを取得してステップのシーケンス番号を編集するだけです。

4

1 に答える 1

3

RemoveExistingProductsアクションをインストーラーシーケンスの上位に配置する必要があるようです-おそらくInstallValidateアクションに。

Visual Studioでこれを実現する方法がわからないのではないかと思います。高度なインストーラーを使用すると、インストールパッケージの構築と管理にはるかに簡単なインターフェイスが提供されることがわかりました。

于 2012-05-31T13:01:19.180 に答える