2012-06-14 5 views
7

メジャーアップグレードを実行しようとしています。調査中、私は2つのアプローチを見つけました。メジャーアップグレードに優先するメジャーアップグレードまたはアップグレードIDですか?

1つはアップグレードIDを使用し、もう1つはMajorupgradeタグでした。

マジックアップグレードがしやすいようです。しかし、スケジュールには、installinitialize前のアクションは含まれていません。

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

どちらがお勧めですか?お勧めですか?

+1

スケジュールには、InstallInitializeより前のオプション「afterInstallValidate」があります。 – Adkins

答えて

17

MajorUpgrade要素は、Upgrade要素で通常行うことを簡単にするためにwix 3.5で導入されました。だから、代わりにこのような何か:あなたは、単にこれを行うことができます

<!– Major upgrade –> 
<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要素にはこれらの複雑な要素はありませんので、使用することをお勧めします。このblog post by Bob Arnson introducing MajorUpgradeおよびtopic in the wix documentationも参照してください。

関連する問題