12

メジャーアップグレードを試みています。調査中に、2つのアプローチを見つけました。

1つはアップグレードIDを使用しており、もう1つのアプローチはMajorupgradeタグでした。

Majorupgradeは簡単にできるようです。ただし、installinitializeアクションの前のスケジュールには何も含まれていません。

どちらを使用すべきかわかりません。

どちらが最も好まれ[そして推奨]されますか?

4

1 に答える 1

25

MajorUpgrade要素はwix3.5で導入され、 Upgrade要素で通常行うことを簡素化します。したがって、このようなものの代わりに:

<!– Major upgrade –&gt; 
<Upgrade Id="$(var.UpgradeCode)"> 
    <UpgradeVersion Minimum="$(var.ProductVersion)" OnlyDetect="yes" Property="NEWERVERSIONDETECTED" /> 
    <UpgradeVersion Minimum="1.0.0" IncludeMinimum="yes" Maximum="$(var.ProductVersion)" IncludeMaximum="no" Property="OLDERVERSIONBEINGUPGRADED" /> 
</Upgrade>

<InstallExecuteSequence> 
    <RemoveExistingProducts After="InstallValidate" /> 
</InstallExecuteSequence>

<Condition Message="Can't downgrade"> 
    NOT NEWERVERSIONDETECTED 
</Condition>

あなたは単にこれを行うことができます:

<MajorUpgrade DowngradeErrorMessage="Can’t downgrade." />

古い方法はより冗長であるだけでなく、Product要素で指定されているアップグレードコードと製品バージョンを繰り返す必要があります。したがって、上記のサンプルでは、​​wix変数を使用して同期を維持する必要があります。それを間違えると、アップグレードは正しく機能しません。

新しいMajorUpgrade要素にはこれらの複雑さはないので、使用することをお勧めします。ボブ・アーンソンによるこのブログ投稿と、このMajorUpgradeテーマに関するwixドキュメントのトピックも参照してください。

于 2012-06-14T07:49:13.640 に答える