卸载后如何让WiX离开文件?

时间:2010-04-13 15:55:42

标签: file wix uninstall

卸载后有没有办法不删除文件?

4 个答案:

答案 0 :(得分:39)

设置ComponentPermanent="yes",如下所示:

<Component Id="LicenseDoc" Guid="*" Permanent="yes">
    <File Id ="License.rtf" Source="$(var.SolutionDir)Installer\License.rtf" />
</Component>

答案 1 :(得分:6)

来自wixusers邮件列表的Phil Wilson的赞美:

请参阅Component表的MSI SDK文档 - 将Component guid设置为null(空)。这样做的结果是组件未注册(因此无法修复)并且不会被卸载。

答案 2 :(得分:2)

我知道这个问题很老,但我偶然发现它,因为我正在寻找安装程序安装丢失字体的方法,但是在卸载应用程序时不能卸载它们。希望它能帮助可能遇到这个问题的其他人。我对所提供的两种解决方案都感到有点不舒服(空白/空Guid或将组件设置为永久性)。所以我想出了这个,对我有用:

<Feature Id="myFonts" Title="Application Fonts" Level="1">
  <ComponentGroupRef Id="Component_group_with_fonts_to_install" />
  <Condition Level="0">
    <![CDATA[REMOVE = "ALL"]]>
  </Condition>
</Feature>

这样就安装了字体功能,但是在卸载时,功能的级别设置为0,因此不会单独使用。

答案 3 :(得分:0)

防止 Windows Installer 在卸载时删除组件的另一种方法是设置空白或空组件GUID 。这将导致组件被安装但永远不会被跟踪或卸载。

请参阅MSI SDK documentation:&#34; ...如果此列(ComponentId)为空,则安装程序不会注册该组件,并且安装程序无法删除或修复该组件。如果在安装期间仅需要组件,则可以有意地执行此操作,例如清理临时文件或删除旧产品的自定义操作。将数据文件复制到不需要注册的用户计算机时,它也可能很有用。&#34;