2

2 つの製品をインストールしています。バージョン番号とアップグレード コードは同じですが、製品コードは異なります。これらの製品の 1 つでメジャー アップグレードを行いたいのですが、作成したアップグレード exe によって両方の製品が削除され、新しい製品がインストールされてしまいます。

そうは言っても、ある製品にアップグレードしたい別の製品と同じアップグレード コードがある場合、どうすればその製品をインストールしたままにできますか?

4

1 に答える 1

1

アップグレードテーブルは、最初にFindRelatedProductsを駆動します。FindRelatedProductsは、この情報を使用してMSI製品検索を実行します。ActionProperty列で指定されたプロパティに見つかったのProductCodeを配置する場合

その後、RemoveExistingProductsは、ActionPropertyプロパティで見つかったProductCodesのアンインストールを実行します(msidbUpgradeAttributesOnlyDetectが設定されていない場合)。

したがって、このような厄介な状況から抜け出す秘訣は、FindRelatedProductsがどちらの製品も見つけられないようにするアップグレード行を作成することです。次に、カスタムアクションを使用して独自の検索を実行し、必要に応じてプロパティを設定します(一方は他方ではありません)。これで、RemoveExistingProductsはメジャーアップグレードを実行できるようになります。

補足として:これは回避策であり、ベストプラクティスではありません。今後この状況を回避するために、UpgradeCodes、ProductCodes、およびProductVersionプロパティの選択を慎重に検討してください。

于 2013-02-18T17:44:23.187 に答える