0

WiX 3.10 を使用しています

次の Wxs ファイルは、私の WiX インストーラーを定義します。ただし、最近、新しいバージョンをインストールする前に古いバージョンを削除したいと考えていました。驚いたことに、ローカルで動作しますが、tfs でビルドすると動作が異なります。次の例を参照してください。

バージョン 2.0.1 がインストールされていると仮定します。

  1. プロジェクトの新しいビルドをキューに入れ、tfs で 2.0.2 msi を作成します
  2. 私は2.0.2 msiを実行しています
  3. プログラムと機能のインターフェイスを確認すると、2.0.1 と 2.0.2 の両方が表示されます
  4. 別の tfs ビルドを開始し、2.0.3 msi を取得します
  5. 私は2.0.3 msiを実行します
  6. プログラムと機能ウィンドウを確認すると、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>
4

1 に答える 1

2

さて、バージョンは 4 ではなく 3 つの部分であるべきであることが判明しました。

于 2016-12-10T19:28:07.627 に答える