1

DLLで定義されたカスタムアクションを使用して、WiXでインストーラーファイルを作成しています。カスタムアクションはアンインストール時に実行され、失敗した場合は、アンインストールプロセスとロールバックを停止する必要があります。このアクションはシステムに影響を与えないので、前に呼び出すことができるのでInstallInitialize、元に戻すための他の変更はありません。

conditionカスタムアクションのプロパティを定義すると、次のようにアンインストールプロセスを停止するために使用できると言われました。

<SetProperty Id="CA_mine" 
             Value="No" Sequence="execute" 
             Before="CA_mine">
  Installed AND remove=ALL
</SetProperty> 
<CustomAction Id="CA_mine" BinaryKey="BIN_mine" DllEntry="mine" Execute="immediate"/>
<InstallExecuteSequence>
  <Custom Action="CA_mine"
          Before="InstallInitialize">
    Installed AND remove=ALL      
  </Custom>
</InstallExecuteSequence>

<Condition>
  NOT (Installed AND remove=ALL)  OR [CA_mine] = "No"
</Condition>

アンインストールを停止する場合mineは、プロパティCA_mineを「はい」に設定します。

これでもうまくいくでしょうか?conditionタグはいつ評価されますか?ここで私の目標を達成するためのより簡単な方法はありますか(mine失敗したときにアンインストールをロールバックします)?

4

1 に答える 1

2

Condition要素は、Product要素の下にネストされている場合、LaunchConditionsテーブルを参照します。

プロパティが設定されて評価できるように、 LaunchConditionsアクションの前にカスタムアクションをスケジュールする必要があります。AppSearchアクションの拡張機能と考えてください。

于 2012-09-02T17:22:41.577 に答える