我希望WiX在卸载时删除AppData文件夹,所以我查看了RemoveFolderEx,并按照一些帖子/指南来了解如何使其正常工作。据我所知,我的实现应该有效,但事实并非如此。我使用以下内容:
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="AppDataFolder">
<Directory Id="PRIVATEDATAFOLDER" Name="MyApp"/>
</Directory>
</Directory>
<Property Id="PRIVATEDATAFOLDER">
<RegistrySearch Root="HKCU" Key="Software\AppCo\MyApp" Type="raw"
Id="APPLICATIONFOLDER_REGSEARCH" Name="PrivateDir" />
</Property>
<DirectoryRef Id='PRIVATEDATAFOLDER'>
<Component Id="PrivateData" Guid="myGuid">
<CreateFolder Directory="PRIVATEDATAFOLDER"/>
<util:RemoveFolderEx Property="PRIVATEDATAFOLDER" On="uninstall"/>
<RemoveFolder Id="PRIVATEDATAFOLDER" On="uninstall"/>
<RegistryValue Root="HKCU" Key="Software\AppCo\MyApp" Name="PrivateDir"
Type="string" Value="[PRIVATEDATAFOLDER]" KeyPath="yes"/>
</Component>
</DirectoryRef>
我在这里做错了吗?
编辑: 检查详细日志后,我收到错误:
WixRemoveFoldersEx:错误0x80070057 :缺少文件夹属性:PRIVATEDATAFOLDER
答案 0 :(得分:7)
在您的日志中,在“错误0x80070057 :缺少文件夹属性:PRIVATEDATAFOLDER”上方有一条日志行,例如“忽略不允许的属性PRIVATEDATAFOLDER”,如果有,是否尝试添加 'secure =“是”到您的PRIVATEDATAFOLDER财产?
答案 1 :(得分:1)
为属性使用与目录不同的Id。它们发生冲突,导致该属性在RemovedFoldersEx尝试处理时为空。