1

特別な機能のアクション状態が「インストール」の場合に実行する必要があるカスタム アクションがあります。今、私は次の条件を使用しています:

(&ca_feature=3 AND NOT &ca_feature=2) OR (!ca_feature=3 AND PATCH) .

モディファイモードでも実行したい。機能が既にインストールされていて、ユーザーがそれを削除したくない場合。OR (REINSTALL><ca_feature OR REINSTALL=ALL)条件文字列に追加することを考えました。しかし、それは機能していないようです..状況によってはMSIがどのように機能しているのかわかりません。それが私の問題です。しかし、私もインターネットで答えを見つけることができません。私が何をしているのか/理解が間違っているのか教えてください?事前に感謝します

4

1 に答える 1

2

状態は正しく見えます。機能を再インストールする場合は、の最後の部分REINSTALLが当てはまります。

!ca_feature=3の代わりに使用を試みることもできますがREINSTALL><ca_feature、機能のインストール時にCAが実行されます。


私はあなたの状態がこのように見えると思います:

(&ca_feature=3) OR (!ca_feature=3 AND NOT (REMOVE><ca_feature OR REMOVE=ALL))

この機能のインストールがスケジュールされている場合、またはインストールされていて削除がスケジュールされていない場合は、CAが実行されます。

最初の括弧内のこの部分は、すでに3に等しい場合は2に等しくできないAND NOT &ca_feature=2ため、冗長です。&ca_feature


MSI冗長ログを使用して、何が起こっているのかをよりよく理解します。この方法でインストールを実行します。

msiexec /i package.msi /l*vx log.txt

機能の状態が変更されたり、プロパティが変更されたりすると、ログにメッセージが表示されます。次に、実際の値を期待値と比較できるようになります。/i変更または削除モードで実行する代わりに、他の操作スイッチを使用してください。

于 2011-07-28T08:58:28.393 に答える