3

ソフトウェアの 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 サービスであることです。それが重要かどうかはわかりません。助けてくれてありがとう!

4

1 に答える 1

7

同じアップグレードコードを持っているだけでは十分ではありません。また、2 つのパッケージのインストール タイプが同じであることも確認する必要があります。つまり、どちらもユーザーごとまたはマシンごとにインストールされます。インストールの種類が異なる場合、Windows インストーラーは古いバージョンの削除をスキップします。

于 2012-06-20T15:16:34.240 に答える