卸载后有没有办法不删除文件?
答案 0 :(得分:39)
设置Component
值Permanent="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;