我已经定义了一个组件,用于在卸载时清理生成的(未安装的)文件,但在阅读完这篇文章后保留完整的主要升级
<Component Id="C_RemoveOnUninstall" Guid="XXX">
<RemoveFile Id="DeleteGeneratedFile" Name="ProgramGeneratedFile" On="uninstall"/>
<Condition>REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE</Condition>
</Component>
根据上述条件,文件将同时用于升级和卸载。 如果没有这个条件,则会删除升级和uinstall文件。
我已经为每个On =“install / uninstall / both”尝试了RemoveFile,但似乎并不重要。已阅读this post但我希望使组件条件有效并避免为此编写自定义操作。
此代码看起来是否正确?任何解决方案或解决方法?
答案 0 :(得分:0)
当属性DirProperty引用的值为null时,此方法假定RemoveFiles action忽略RemoveFile table中的项。 DirProperty引用属性将在卸载期间设置,但不会在升级期间设置。
有条件地设置属性:
<SetProperty Id="prop_GeneratedFileDir" Value="[GeneratedFileDir]" After="InstallInitialize" Sequence="execute">
REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE
</SetProperty>
为RemoveFile表定义一个元素:
<Component Id="C_RemoveOnUninstall" Guid="XXX">
<RemoveFile Id="DeleteGeneratedFile" Property="prop_GeneratedFileDir" Name="ProgramGeneratedFile" On="uninstall"/>
<CreateFolder/>
</Component>
一些有用的链接: wix-users,RemoveFile Table,RemoveFile Element,RemoveFolderEx Element