2016-10-14 6 views
0

wxsファイルに次のコードスニペットがあります。私はOn属性を両方にしても、アンインストールしてもTraceフォルダからトレース拡張子を持つファイルは削除されません。インストール時のみ正常に動作します。 On属性だけを両方に変更した場合、またはインストール時にインストールされた場合、アンインストールプロセスでは動作しません。WiX:RemoveFile宣言により、インストール時にのみファイルが削除されます

<Directory Id="TRACEDIR" Name="Trace"> 
    <Component Id="Trace" Guid="*" KeyPath="yes"> 
     <RemoveFile Id="RemTraceFiles" On="both" Name="*.trace"/> 
    </Component> 
</Directory> 

どのような考えですか?

私は以下の質問に対して別のバグを作成しませんでした。私は信じているので、下の質問に追加しました。両方のケースが失敗するのは同じ理由かもしれません。だから私の2番目の質問は、同じファイル内の次のようなシナリオですが、今度はファイルの削除だけでなく、フォルダの削除です。我々が持っていると仮定します

<Property Id="LOGDIREX"> 
    <DirectorySearch Id="CheckLogDir" Path="[INSTALLDIR]\Log" Depth="1" AssignToProperty="yes" /> 
</Property> 

... 

<Directory Id="LOGDIR" Name="Log"> 
    <Component Id="Log" Guid="01978736-614F-46C1-88FA-056284510164"> 
     <!--RemoveFolder Id='LogFolder' On='both' /--> 
     <RegistryValue Root='HKCU' Key='Software\[Manufacturer]\FoobarLog' Type='string' Value='' KeyPath='yes' /> 
     <utilExt:RemoveFolderEx Id='LogFolder' On='both' Property='LOGDIREX'/> 
    </Component> 
</Directory> 

私はUtilExtensionライブラリのRemoveFolderExタグ宣言を使用している場合、私のインストールディレクトリ下のログフォルダが両方に削除されますので、この例では、その後、インストールおよびアンインストールし、プロセス。しかし、RemoveFolderEx宣言にコメントして、RemoveFolderEx宣言のすぐ上に宣言されているように、通常のWix RemoveFolderを使用するコメントを外すと、インストール時もアンインストール時もログフォルダは削除されません。

アイデア?

この質問の両方のディレクトリ宣言、TRACEDIRとLOGDIRは、私のアプリケーション用のディレクトリであるINSTALLDIRの下に宣言されています。

答えて

0

TRACEDIRはカスタムプロパティです。プロパティの値はインストールとアンインストールの間に何らかの形で保存されていると思われますが、そうではありません。これは、TRACEDIRの価値を維持して復元する必要があることを意味し、WiXの「プロパティの保存」パターンはおそらく必要なものです。

http://robmensching.com/blog/posts/2010/5/2/the-wix-toolsets-remember-property-pattern/

また、検索が非常に早く、インストール中に行われ、それがINSTALLDIRが有効な値を持っていることは明らかではないのでINSTALLDIRためdirectorysearchが失敗する可能性があることに注意してください。

また、あなたはシステムロギングポリシーを使用して、プロパティを設定(またはしない)されている場所を確認するために、アンインストールの詳細なログを作成することができ、あるいは:

ます。msiexec/X {製品コード}/L * VX [パスログファイルへ]

も有効です。

+0

TRACEDIRの名前をMYTRACEDIRに変更しました。これは同じ動作です。 –

+0

名前の変更が関係する理由がわかりません。アンインストール時に必要なプロパティに "remember property"パターンを使用しましたか? – PhilDW

+0

私はTRACEDIRがTARGETDIRのようにWixの特別なキー名であると言っていたと思ったので、名前を変更しました。とにかく、私はあなたの助言に続き、あなたが提供したリンクのようなREMEMBERMEプロパティを宣言しました。私はそれをLOGDIRコンポーネントのRemoveFolder宣言とともにRegistryValue宣言に使用しました。それはうまくいかなかった。 私はTRACEDIRのためにそれをテストするのに少し懐疑的でした。なぜならそれはRemoveFile宣言を保持し、LOGDIRはRemoveFolderではないからです。しかし、私はTRACEDIRでそれをテストし、どちらもうまくいきませんでした。 –

関連する問題