2016-09-22 17 views
0

MSIの上位バージョンをインストールする前に、あらかじめインストールされている下位バージョンのMSIを削除/アンインストールしたいと考えています。私の製品コードは常にユニークで、アップグレードコードは常に同じです。WIXに上位バージョンのMSIを正しくインストールしてください

(私はインストールをダウングレードできるようにする必要はありません。)

しかし、私は高く、製品のバージョンMSIをインストールするときに、それがインストールされるが、アドオンは/インストール新しい、以前にインストールしたMSIの両方のためのプログラムのエントリを削除するには、まだ存在して。どのようにこの問題を克服する?以下は、このことからもわかるように、私のコード

<Product Id="*" Name="MyApp" Language="1033" Version="1.11.1111" UpgradeCode="00000000-8030-4B76-8F3A-8B8BB1000000"> 
<Package InstallerVersion="200" Compressed="yes" Platform="x86" /> 

<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." AllowDowngrades="no" Schedule="afterInstallInitialize"/> 

<Upgrade Id="{00000000-8030-4B76-8F3A-8B8BB1000000}"> 
    <UpgradeVersion OnlyDetect="no" Maximum="99.0.0.0" Property="PREVIOUSVERSIONSINSTALLED" IncludeMaximum="no"/> 
    <UpgradeVersion OnlyDetect="yes" Minimum="1.0.0.0" Property="NEWERPRODUCTFOUND" IncludeMinimum="no"/> 
</Upgrade> 

答えて

1

です:

http://www.joyofsetup.com/2010/01/16/major-upgrades-now-easier-than-ever/

MajorUpgrade要素がアップグレード要素を置き換えます。両方のアップグレードタイプが指定されているため、いくつかの問題が発生している可能性があります。

バージョンが最初の3つのフィールドで増分され、UpgradeCodeが同じでProductCodeが新しい場合は、失敗の原因(インストールされた2つのエントリを取得する)は、以前のものがperUser perMachine)とアップグレードは逆です。主なアップグレードは同じコンテキスト内になければなりません。

+0

これは、製品タグのIdも静的である必要があることを意味しますか? –

+0

あなたの言うことはアップグレードに適しています。実際の問題は、インストールとアップグレードが現在のユーザーに対して行われた場合は、ARPエントリを複製したことです。この問題は、スコープ「ALLUSERS = 1」でインストールして更新すると発生しません。なぜこれが起こっているのかを知る必要がある –

関連する問題