卸载程序后,有没有办法不删除文件?
将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文档中的Component表 - 将组件GUID设置为空(空)。这样做的效果是该组件不会被注册(因此无法进行修复),也不会被卸载。
我知道这个问题很旧了,但当我在寻找一种方法让我的安装程序安装缺少的字体时,我偶然发现了它,但是不希望在卸载应用程序时卸载它们。希望能对其他遇到这个问题的人有所帮助。我对提供的两个解决方案(空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文档:“...如果此列(ComponentId)为空,则安装程序不会注册该组件,并且该组件不能通过安装程序进行删除或修复。如果此组件仅在安装期间需要,例如清理临时文件或删除旧产品的自定义操作,可能会有意地采取此措施。在将数据文件复制到用户计算机上并不需要注册的情况下,这也可能很有用。"