2010-04-13 76 views

回答

36

设置ComponentPermanent="yes"像这样:

菲尔·威尔逊的
<Component Id="LicenseDoc" Guid="*" Permanent="yes"> 
    <File Id ="License.rtf" Source="$(var.SolutionDir)Installer\License.rtf" /> 
</Component> 
+7

我发布了向Wixusers邮件列表提问并得到同样的答案,但也要注意永久旗帜(菲尔威尔逊的赞美): 只要每个人都意识到永久永久永久永久。这并不意味着“直到我将该设置更改为非永久性”。它使得这个组件永久存在于系统中,除非永久性地“永久安装”,否则我不会使用它。 – glenneroo 2010-04-14 10:34:08

+0

我会重振这个话题,并问:如果你有很多(200+)文件要离开?去每个组件并添加永久=“是”或设置Guid =“”感觉不对。 – treaz 2014-06-25 09:48:58

+1

但是这是WiX的方式,您正在描述每个文件的有限状态,因此在安装/卸载之前/之后应该如何确定系统的含义是零。老安装者的问题是他们没有处理所有的错误,因此会出现奇怪的状态。 MSI是一个有状态的过程。 – 2014-06-25 21:12:34

6

恭维从wixusers邮件列表:

查看组件表中的MSI SDK文档 - 设置组件GUID为空(空)。这样做的结果是组件未被注册(所以它不能被修复),它不会被卸载。

0

另一种方式来防止Windows安装程序从删除在卸载的组件是设置一个空白或空组件GUID。这将导致组件被安装,但它将不会被跟踪或卸载。

MSI SDK documentation:“...如果此列(COMPONENTID)是空的安装程序不注册该组件和组件无法使用安装程序进行删除或修复这可能是有意的,如果组件仅如在清理临时文件或删除旧产品时的自定义操作,当将数据文件复制到用户的计算机而不需要注册时可能也很有用