開発者が変更をチェックインするたびに、CI ビルド システムで MSI をビルドします。インストールされた MSI に対して自動受け入れテストを実行します。
基本的に、すべての MSI は製品の完全なインストールであるため、バージョン管理 (Windows インストーラーなど) 自体はありません。
各 MSI には、同じ製品 GUID とアップグレード GUID、および同じバージョン番号があります。ただし、パッケージ GUID が異なります (wix では「*」を使用します)。
私が達成したいのは、インストーラーが実行されると、以前にインストールされた製品のバージョンを「アンインストール」し、新しいバージョンをインストールすることです..すべて単一の MSI から (私たちの制御の及ばない複雑なインストール プロセスがあります) .. citrix と sccm であるため、単純なインストール パスを指定します)
私が試してみました:
<Property Id='PREVIOUSVERSIONSINSTALLED' Secure='yes' />
<Upgrade Id='$UPGRADE_GUID'>
<UpgradeVersion Minimum='1.0.0.0'
Maximum='99.0.0.0'
Property='PREVIOUSVERSIONSINSTALLED'
IncludeMinimum='yes'
IncludeMaximum='no' />
</Upgrade>
そして持っています:
<InstallExecuteSequence>
<RemoveExistingProducts After='InstallFinalize' />
</InstallExecuteSequence>
試してみました:
<InstallExecuteSequence>
<RemoveExistingProducts After='InstallInitialize' />
</InstallExecuteSequence>
しかし、後続のビルドから msi をインストールしようとすると、次のようになります。
Another version of this product is already installed. Installation of this version cannot continue.
To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel.
これは本当に私が目指していたものではありません..
商品タグの Version 属性を更新するだけでいいのは理解していますが、それでは管理が難しくなります。まず、MSI を生成する多数のビルド パイプラインがあり、意味のある方法でバージョン番号を処理する方法がわからないため、1 日に 20 以上の msi ビルドを生成できます。
おそらく、Windows インストーラーは、このタイプの「インストール済みバージョンを常に上書きする」インストールを許可していないのでしょうか?