3

詳細については少し軽視していますが、問題があると思います。

Wix でインストーラー プロジェクトをブーストラップするコピー アンド ペースト方法を使用すると、UpgradeCode を更新して一意であることを確認していないようです...

<Product Id="*" UpgradeCode="SOME-BAD-FOO">

なので、これは「ダメ」という認識です(r)(tm)

現時点では、この問題を抱えた 2 つのインストーラーのユーザーが両方をインストールした可能性は低いですが、将来的にはそうなる可能性があります。

インストールされた悪夢になる前に、この問題を解決する方法についてのアイデアを探しています...おそらく、Windowsは両方を同時にインストールすることさえできませんか? アップグレードのインストール/パッチを実行して UpgradeCode を変更する方法はありますか?

4

2 に答える 2

4

なので、これは「ダメ」という認識です(r)(tm)

これは本当に良くありません。あなたとユーザーに多くの頭痛の種を与える可能性があるため、今後はそうしないように注意する必要があります。

ただし、解決策は非常に簡単です。パッケージの 1 つのアップグレード コードを変更し、現在のアップグレード コードを新しいバージョンのアップグレード テーブルに追加するだけで、マシン上で見つかった場合は削除されます。

最初のバージョンをインストールしたすべてのユーザーが 2 番目のバージョンをインストールすることが確実な場合は、次のリリースでアップグレード テーブルからアップグレード コードを削除して、2 番目のパッケージと競合しないようにする必要があります。つまり、まだ最初のアップグレード コードを使用しています。

于 2012-11-14T07:46:23.820 に答える
2

私が尋ねたい1つの質問は、メジャーアップグレードまたはマイナーアップグレードを使用していることです。

マイナーの場合、UpgradeCodeを変更しようとしたことはありませんが、ProductCodeを変更したことはありません。大丈夫だと思いますが、怖いです。

メジャーアップグレードの場合、製品は異なるバージョン番号範囲を使用しますか?1.0-1.9、2.0-2.9?その場合、両方のインストーラーでUpgradeCodeを変更し(過去の「ダーティ」GUIDをそのままにしておく)、正しい製品コードを識別するためのキーとしてバージョン番号を使用してUpgradeTableの古いGUIDを使用することができます。

そうでない場合は、両方の製品でこれまでに公開されたすべてのProductCodeを知っていますか?カスタムアクションを使用して、インストールされているProductCodesについてMSIにクエリを実行し、それを既知のGUIDのリストと比較して、適用されるかどうかを判断できます。

ただし、コードは永久に残す必要があります。古いバージョンのソフトウェアは、永遠に存続する傾向があります。

于 2012-11-15T12:40:22.890 に答える