如果注册表中的某个文件夹路径不存在,我需要删除文件夹。我写了下面的代码,但它不起作用。该文件夹不会被删除,也不会记录日志中的条件检查。
<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>
我在这里做错了什么?任何帮助将不胜感激。
答案 0 :(得分:1)
如果处理组件时文件夹中有任何,则RemoveFolder无法删除该文件夹。您可能遇到的问题是,在处理该文件夹中表示某些内容的所有其他组件之前,或者在此文件夹中存在不属于您的安装的文件时,将对此组件进行处理。
我不知道是否有办法强制最后处理组件。您可以尝试的另一种选择是Util:RemoveFolderEx。请注意本页底部的注释非常重要。这基本上是说你不能使用目录属性来定义要删除的路径;你不能使用[MyProgramDir]作为财产。为此Util实现Property的建议方法:RemoveFolderEx是使用注册表搜索来获取正确的路径,然后使用注册表搜索设置的属性。