【发布时间】:2011-02-07 12:47:09
【问题描述】:
有没有办法在卸载后不删除文件?
【问题讨论】:
标签: file wix uninstallation
有没有办法在卸载后不删除文件?
【问题讨论】:
标签: file wix uninstallation
像这样设置Component值Permanent="yes":
<Component Id="LicenseDoc" Guid="*" Permanent="yes">
<File Id ="License.rtf" Source="$(var.SolutionDir)Installer\License.rtf" />
</Component>
备注:
Permanent="yes" 如何,都将删除此文件
【讨论】:
来自 wixusers 邮件列表的 Phil Wilson 的赞美:
请参阅 MSI SDK 文档以获取组件表 - 将组件 guid 设置为 null(空)。这样做的效果是该组件未注册(因此无法修复)并且不会被卸载。
【讨论】:
我知道这个问题很老,但我只是偶然发现了它,因为我正在寻找一种方法让我的安装程序安装丢失的字体,但在卸载应用程序时不卸载它们。希望它可以帮助其他可能遇到这个问题的人。我对所提供的两种解决方案(空白/空 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,所以不管它。
【讨论】:
防止 Windows Installer 在卸载时删除组件的另一种方法是设置空白或空组件 GUID。这将导致组件被安装,但永远不会被跟踪或卸载。
请参阅MSI SDK documentation:“...如果此列 (ComponentId) 为空,则安装程序不会注册组件,并且安装程序无法删除或修复组件。如果组件仅在安装期间需要,例如清除临时文件或删除旧产品的自定义操作。在将数据文件复制到不需要注册的用户计算机时也可能很有用。"
【讨论】: