Wixでインストール時にのみ実行させたいケース、アンインストール時にのみ実行させたいケースなどなどの条件がわかりにくいので、ちょっとまとめてみます。
認識が間違っているなどあればご指摘ください。
インストール
NOT Installed
アンインストール
REMOVE="ALL"
以上を踏まえた上でより複雑な条件
インストール時にチェック、アンインストール時チェック不要パターン1
http://wixtoolset.org/documentation/manual/v3/howtos/files_and_registry/read_a_registry_entry.html
に載っている例
<Condition Message="This application requires .NET Framework 2.0. Please install the .NET Framework then run this installer again."> <![CDATA[Installed OR NETFRAMEWORK20]]> </Condition>
インストール時に「.NET Framework 2.0.」がインストールされているかチェック。アンインストール時にはチェックは不要となるケース。
インストール済(Installed) or .NET Framework 2.0.インストール済(NETFRAMEWORK20)以外の時に(!による否定)Conditionが発動
http://stackoverflow.com/questions/6716246/dont-understand-wix-conditions-boolean-logic
にも解説が載っています。
インストール時にチェック、アンインストール時チェック不要パターン2
<Condition Message="This application is installed."> <[CDATA[NOT Installed AND NOT REMOVE]]> </Condition>
実はアンインストールには2パターンあるケース
プログラムのアンインストールまたは変更から削除する場合
<InstallExecuteSequence> <Custom Action=' ... ' After=' ... '>REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE</Custom> </InstallExecuteSequence>
メジャーアップデート時に古いバージョンを削除する場合
<InstallExecuteSequence> <Custom Action=' ... ' After=' ... '>UPGRADINGPRODUCTCODE</Custom> </InstallExecuteSequence>
http://stackoverflow.com/questions/17411913/how-can-i-perform-a-custom-action-in-wix-that-only-executes-on-install-or-uninst
詳しい対応表が以下に載っています。
http://stackoverflow.com/questions/320921/how-to-add-a-wix-custom-action-that-happens-only-on-uninstall-via-msi/321874#321874