2016-07-08 13 views
0

レジストリ内の特定のフォルダパスが存在しない場合、フォルダを削除する必要があります。私は以下のコードを書いたが、うまくいかない。フォルダは削除されず、ログの状態チェックについても何も表示されません。レジストリエントリが存在しない場合にフォルダを削除する

<Property Id="UPDATERSERVICEFOLDER"> 
    <RegistrySearch Key="SYSTEM\CurrentControlSet\Services\UpdaterService\Parameters" Root="HKLM" Type="raw" Id="UpdateDirectoryRegistrySearch" Name="UpdaterServicePath" /> 
</Property> 

    <Component Id="RemoveFolder" Directory="MyProgramDir" Guid="*" > 
    <RemoveFolder Id="MosquittoInstallDir" On="uninstall"/> 
    <Condition><![CDATA[UPDATERSERVICEFOLDER]]></Condition> 
    </Component> 

私はここで間違っていますか?どんな助けでも大歓迎です。コンポーネントが処理されるとき、フォルダ内がある場合

答えて

1

RemoveFolderは、フォルダを削除することはできません。あなたが持っている問題は、このフォルダ内の何かを表す他のすべてのコンポーネントが処理される前に、このコンポーネントが処理されるか、このフォルダにインストールに含まれていないファイルがあることです。

最後にコンポーネントを強制的に処理する方法があるかどうかわかりません。試してみることのできる代替方法はUtil:RemoveFolderExです。このページの一番下にある発言を書き留めておくことは非常に重要です。基本的には、削除するパスを定義するためにディレクトリプロパティを使用することはできません。 MyProgramDirをプロパティとして使用することはできません。このUtil:RemoveFolderExのプロパティを実装するために推奨される方法は、レジストリ検索を使用して正しいパスを取得し、レジストリ検索によってそのプロパティセットを使用することです。

+0

RemoveFolderExを使用する際の問題は、条件を正しくサポートしていないことです。 RemoveFolderExを使用してレジストリ値が存在するかどうかを確認してから、フォルダを削除することは可能ですか?あなたが例を挙げて助けてくれるならば:( – mayooran

+1

アンインストール時に条件付きでフォルダを削除したいのであれば、あなたの条件が満たされたときにアンインストール時にフォルダを削除するというカスタムアクションを書くのが最善だと思います。 –

関連する問題