カスタムアクションからRemoveFolderEx要素を手動で実行できるかどうかは疑問です。私はおそらくないと推測しているが、誰かが私が気付いていない方法を知っているかもしれない。Wix:カスタムアクションからRemoveFolderEx要素を手動で実行できますか?
私の問題はRemoveFolderEx要素を実行したいのですが、本当のUNINSTALLだけですが、私のプログラムは、再インストールする前にアンインストールするように設定したので、アップグレードするときに実行します。
私はこの方法で試しました Wix: condition on property not working しかし、それは動作しませんでしたが、再インストールするときにも実行されました。
私が考えることのできる唯一のことは、私が正しいポイントで実行し、真のアンインストールでのみ実行することを知っているカスタムアクションからRemoveFolderExを手動で設定できることです。おそらく私のカスタムアクションは、C + +のDLLを使用して手動でMSIのインターフェイスにコマンドを追加することができますが、私はそれだけでも、完全に削除ロジックを自分自身を書くことがあります行くだろう。
ありがとうございました。ニール
編集:私は最終的にこれを得ました、ここでは私が何をしたかを示すいくつかの例があります。
<Property Id='P.REMOVEDATAFOLDER' Secure='yes' />
<DirectoryRef Id="DATADIR">
<Component Id="C.RemoveDataFolder" Guid="myguid" KeyPath="yes">
<util:RemoveFolderEx On="uninstall" Property="P.REMOVEDATAFOLDER" />
</Component>
</DirectoryRef>
<CustomAction Id="CA.SetDataFolder" Property="P.REMOVEDATAFOLDER" Value='[DATADIR]' />
<InstallExecuteSequence>
<Custom Action="CA.SetDataFolder" Before="ValidateProductID" >(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom>
</InstallExecuteSequence>
財産P.REMOVEDATAFOLDER のみがDATADIRがレジストリからではなく、CostInitializeアクションの前に読み込まれた直後に真のアンインストールに設定されます。
RemoveFolderExを調整することはできませんが、カスタムアクションを実行することはできます。そのため、RemoveFolderEx要素を呼び出す条件付きカスタムアクションを実行すると、私が望む動作が得られます。私がリンクした質問は、RemoveFolderEx要素を含むコンポーネントにconditonを置く試みですが、これはうまくいきません。 – Neil
カスタムアクションからRemoveFolderExを呼び出すのは面倒です。私が提案するものは、もっと簡単です。 RemoveFolderExは変更せずに、カスタムアクションからプロパティを設定するだけです。 – Ciprian
申し訳ありませんが、初めてのことは分かりませんでした。私はそれを試し、それが成功したかどうかあなたに戻ってきます。 – Neil