2012-05-05 13 views
4

私のアプリケーションのダウングレードを防ぐ方法を探しています。しかし、「問題」は、リビジョン番号WiX - リビジョンチェックでダウングレードを防止する

などを確認する必要があります。 1.0.0.1がインストールされている場合は1.0.0.2をインストールする必要がありますが、1.0をインストールすることはできません。 1.0.0.2がインストールされている場合は0.1です。

私が知る限り、Element MajorUpgradeは最初の3つのトークンのみをチェックします。 おそらく誰かが私に考えを与えることができます、どのようにこれを行うには?これを行うためにCustomActionを書くことはできますか? - はいの場合、インストールするバージョンとインストールされているバージョンをCustomActionでどのように確認できますか? CustomActionをどこで呼び出す必要がありますか?メッセージを表示してCustomActionからインストールできないようにするにはどうすればよいですか?

答えて

1

これは一般的な要件です。頻繁に使用される以下のパターン:

<Upgrade Id="THE-PRODUCT-GUID"> 
    <UpgradeVersion Property="PREVIOUSVERSIONINSTALLED" Minimum="1.0.0.0" Maximum="$(var.packageVersion)" 
      IncludeMinimum="yes" IncludeMaximum="no" MigrateFeatures="yes" /> 
      IncludeMinimum="yes" IncludeMaximum="yes" /> 
    <UpgradeVersion Property="NEWERVERSIONINSTALLED" Minimum="$(var.packageVersion)" Maximum="99.0.0.0" 
      IncludeMinimum="no" IncludeMaximum="yes" /> 
</Upgrade> 

<InstallExecuteSequence> 
    <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWERVERSIONINSTALLED&lt;&gt;"" AND NOT Installed</Custom> 
    <RemoveExistingProducts After="InstallInitialize">PREVIOUSVERSIONINSTALLED&lt;&gt;""</RemoveExistingProducts> 
</InstallExecuteSequence> 

PreventDowngradingカスタムアクションは、本質的に破壊エラーです:WIXのウェブサイト上の

<CustomAction Id="PreventDowngrading" Error="Newer version already installed." /> 
1

Thisチュートリアルでは、私のために働きました。

これを要約すると、あなたの製品に含まれるアップグレードタグにUpgradeVersionタグを追加する必要があります。 FindRelatedProductsの前にカスタムアクションを追加し、条件付きでスケジュールを設定し、新しいバージョンが既にインストールされているかどうかをテストします。

コードのようなものが考えられます。

<Product ...> 
<Upgrade Id="YOUR-UPGRADE_GUID"> 
    <UpgradeVersion OnlyDetect="yes" Property="NEWERFOUND" Minimum="{CURRENTVERSION}}" IncludeMinimum="no" /> 
</Upgrade> 
<CustomAction Id="NoDowngrade" Error="Error Message" /> 
<InstallExecuteSequence> 
    <Custom Action="NoDowngrade" After="FindRelatedProducts">NEWERFOUND</Custom> 
    <RemoveExistingProducts Before="InstallInitialize" /> 
</InstallExecuteSequence> 
</Product> 

お使いの製品のバージョン番号を持つCURRENTVERSIONを交換してください。

関連する問題