ソフトウェアの WIX インストーラーを作成していますが、以前の Windows インストーラー パッケージ ソフトウェアからアップグレードする際に問題が発生しました。
問題の前に、1 つの WIX パッケージ SW から別の WIX パッケージ SW へのアップグレードは実際には正常に機能しており、古いバージョンをアンインストールして新しいバージョンをインストールできます。実際の問題は、古いバージョンが Windows Installer パッケージ (現在のソリューション) であり、新しいバージョンが WIX パッケージである場合に発生します。基本的に、私の WIX インストーラーは古いバージョンが既にインストールされていることを検出できないため、古いバージョンをアンインストールせずに新しいバージョンがインストールされます。
WIX インストーラーと Windows インストーラーを接続する方法: WIX の UpgradeCode を Windows インストーラーと同じに設定します。また、オンラインでいくつかの例を確認しましたが、現在のソリューションが機能するはずだと示唆しています。アップグレード部分の .wxs ファイルの一部を次に示します。
<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion OnlyDetect="yes" Minimum="$(var.VersionNumber)" Property="NEWPRODUCTFOUND" IncludeMinimum="no" />
<UpgradeVersion OnlyDetect="no" Maximum="$(var.VersionNumber)" Property="UPGRADEFOUND" IncludeMaximum="no" />
</Upgrade>
<CustomAction Id="PreventDowngrading" Error="A software with newer version number is found on this machine" />
<InstallUISequence>
<Custom Action="PreventDowngrading"
After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
</InstallUISequence>
<InstallExecuteSequence>
<Custom Action="PreventDowngrading"
After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
<RemoveExistingProducts After="InstallFinalize" />
</InstallExecuteSequence>
言及する価値があるかもしれないことの 1 つは、私たちの SW が実際には Windows サービスであることです。それが重要かどうかはわかりません。助けてくれてありがとう!