web-dev-qa-db-ja.com

インストールでのみカスタムアクションを実行する方法(アンインストールではない)

これはかなり簡単だと思いますが、少し苦労しました。インストール時に異なる(非msi)インストーラーを実行するカスタムアクションがあります。残念ながら、UNinstallationでインストーラーも実行されることに気付きました!

私はオプションを調べましたが、これを止める方法を見つけることができないようです。誰かが私を助けることができれば、私は信じられないほど感謝しています。

また、アンインストール中にのみカスタムアクションをオフに設定するにはどうすればよいですか?どんな助けも大歓迎です!

72
Cyprus106

アクションに条件を追加して、アンインストールではなくインストール中にのみトリガーされるようにします。

インストール中にのみ実行されるアクション

NOT Installed AND NOT PATCH

インストールおよび修復中にアクションが実行されます

NOT REMOVE

初期インストールでのみ実行:

NOT Installed

初期インストール時または修復が選択されたときに実行します。

NOT Installed OR MaintenanceMode="Modify"

アンインストール時にのみアクションを実行するには、次の条件を使用します。

REMOVE~="ALL"

アップグレード中にのみアクションを実行するには:

Installed AND NOT REMOVE
163
saschabeaumont

少し修正:

最後に、アンインストール時にのみアクションを実行するには、次の条件を使用します:REMOVE="ALL"

プロパティREMOVEにはアンインストールされる機能が含まれているため、これがより適切と思われます。
したがって、1つの機能を削除するために変更を行うと、REMOVEがtrueになり、アンインストール時にのみ実行されるアクションが変更時に実行されます。
MSDNの詳細はこちら

例:

<InstallExecuteSequence>
..
    <Custom Action="QtExecIdOfCA" Before="InstallFinalize">NOT Installed</Custom>
..
</InstallExecuteSequence>

..
..
<CustomAction Id="QtExecIdOfCA" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="ignore" Impersonate="no"/>

注意!条件は<Custom>タグに追加され、not<CustomAction>は混乱しました。カスタムの後にアクション属性が続くためです

6
kristoffer_o

REMOVE=ALLに注意してください。 installvalidateシーケンスの前には使用できません。
詳細については、以下のリンクを確認してください。
http://msdn.Microsoft.com/en-us/library/aa371194(v = vs.85).aspx
http://msdn.Microsoft.com/en-us/library/aa368013(v = vs.85).aspx

5
Anand Choubey

カスタムアクションの条件。おそらく、アンインストールを実行するための一致するカスタムアクションがあります。使用しているツールがわかりませんが、セカンダリインストールがコンポーネントに関連付けられていると仮定すると、そのコンポーネントの状態を使用します。 = 3の状態は、インストール済みのターゲット状態を意味します。状態= 2は、ターゲット状態が存在しないことを意味します。変更がない場合、状態は設定されないことに注意してください。

1
Darren Clark