WiX:保留主要升级,卸载时删除

时间:2011-08-25 18:20:15

标签: upgrade uninstall

我已经定义了一个组件,用于在卸载时清理生成的(未安装的)文件,但在阅读完这篇文章后保留完整的主要升级

<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但我希望使组件条件有效并避免为此编写自定义操作。

此代码看起来是否正确?任何解决方案或解决方法?

1 个答案:

答案 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-usersRemoveFile TableRemoveFile ElementRemoveFolderEx Element