WiX 3.10 を使用しています
次の Wxs ファイルは、私の WiX インストーラーを定義します。ただし、最近、新しいバージョンをインストールする前に古いバージョンを削除したいと考えていました。驚いたことに、ローカルで動作しますが、tfs でビルドすると動作が異なります。次の例を参照してください。
バージョン 2.0.1 がインストールされていると仮定します。
- プロジェクトの新しいビルドをキューに入れ、tfs で 2.0.2 msi を作成します
- 私は2.0.2 msiを実行しています
- プログラムと機能のインターフェイスを確認すると、2.0.1 と 2.0.2 の両方が表示されます
- 別の tfs ビルドを開始し、2.0.3 msi を取得します
- 私は2.0.3 msiを実行します
- プログラムと機能ウィンドウを確認すると、2.0.2 と 2.0.3 が表示されます (2.0.1 は削除されました!)
なぜ私がそのような奇妙な振る舞いをしているのか、誰かが説明できますか? product Id
要素を新しい GUID に更新し、要素を tfs ビルド番号に一致させるビルド前のスクリプトがありますversion
(したがって、ビルドごとに新しい GUID と新しいバージョン番号が保証されます)。
これが私のWxです
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*"
Name="xxx"
Language="1033"
Version="0.0.0.0"
Manufacturer="xxx"
UpgradeCode="FC30BA3E-619C-4247-988E-2823831E9E04">
<Package Compressed="yes"
InstallerVersion="200"
Manufacturer="xxx"
Description="xxx"
Comments="(C) 2016 xxx"
Platform="x64"
InstallScope="perMachine"/>
...
<MajorUpgrade
Schedule="afterInstallInitialize"
DowngradeErrorMessage="A newer version of [ProductName] is already installed."/>
</Product>
</Wix>