2011-11-24 8 views
5

カスタムアクションから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アクションの前に読み込まれた直後に真のアンインストールに設定されます。

答えて

4

私は、次のアプローチを使用します。 RemoveFolderExオペレーションを条件付けしないで、条件付きカスタムアクションを使用してターゲットプロパティに適切な値を設定します。

+0

RemoveFolderExを調整することはできませんが、カスタムアクションを実行することはできます。そのため、RemoveFolderEx要素を呼び出す条件付きカスタムアクションを実行すると、私が望む動作が得られます。私がリンクした質問は、RemoveFolderEx要素を含むコンポーネントにconditonを置く試みですが、これはうまくいきません。 – Neil

+0

カスタムアクションからRemoveFolderExを呼び出すのは面倒です。私が提案するものは、もっと簡単です。 RemoveFolderExは変更せずに、カスタムアクションからプロパティを設定するだけです。 – Ciprian

+0

申し訳ありませんが、初めてのことは分かりませんでした。私はそれを試し、それが成功したかどうかあなたに戻ってきます。 – Neil

0

this questionからのアドバイスを受けて、アンインストールを示す条件はREMOVE="All" AND NOT UPGRADINGPRODUCTCODEです。このような

何かが動作することがあります。

<Component Id="RemoveMyFolder"> 
    <Condition> REMOVE="All" AND NOT UPGRADINGPRODUCTCODE </Condition> 
    <RemoveFolderEx ... /> 
</Component> 
+0

これは私の元々のアプローチでしたが、コンポーネントがインストールされず、決して取り外すことができないため、これはうまくいかないでしょう。私がリンクした質問を読んだら、それはこのアプローチに関するより多くの詳細に入ります。 – Neil

関連する問題