この前の質問/回答に従って、wix インストール スクリプトを更新しましたWiX インストーラーのアップグレードを実装するにはどうすればよいですか? . アイデアは、古いバージョンが新しいバージョンを「ダウングレード」するのを防ぐことでした。したがって、次のようなwixファイルの一部があります。
<Product Id="A_GUID"
<Upgrade Id="18626be5-521c-4b58-ab8a-54baddf66679">
<UpgradeVersion
Property="NEWERVERSIONDETECTED"
Minimum="$(var.Version)"
IncludeMinimum="no"
OnlyDetect="yes"
ExcludeLanguages="yes"
/>
</Upgrade>
<CustomAction Id="NewerVersionFound" Error="Can't downgrade." />
<InstallExecuteSequence>
<Custom Action="NewerVersionFound"
After="FindRelatedProducts">NEWERVERSIONDETECTED</Custom>
<RemoveExistingProducts After="InstallInitialize" />
</InstallExecuteSequence>
私はこれの 2 つのバージョン、たとえば 2.1 と 2.2 を持っています。現在の慣行では、製品 ID GUID (上記の「A_GUID」として表示) をマイナー バージョン (2.x など) と同じに保ち、メジャー バージョンのみを変更することになっています。そのため、1.x から 2.x に移行する際に Guid を変更します。 .
ただし、「$(var.Version)」が変更されているにもかかわらず、製品ガイドが 2.1 と 2.2 で同じままである場合、上記は機能しません。Guid を変更すると、機能します (2.2 から 2.1 へのダウングレードを防ぎます)。
なぜこれが事実なのか疑問に思っていました (私が正しく行っていると仮定して) - これが機能するために 2 ビットの情報 (GUID とバージョン) が必要なのはなぜですか?
Edit1a: Wix には UpgradeCode Guid があり、これは各バージョンで同じままです。Edit1b: 関連する場合、これは古いバージョンの wix (2.x) で行われます。