You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WiX XmlFile安装时修改是否卸载回滚及Permanent属性用法

1 Permanent="yes"的含义

你对该属性的理解完全正确:在WiX 3.11.2版本中,Permanent="yes"就是指定卸载时不会移除该XmlFile元素在安装阶段施加的修改。默认值为no,即卸载时会按照Sequence属性的逆序自动回滚对应修改,这也和FireGiant教程中的表述完全一致。
你看到的两段矛盾表述,是因为Stein引用的内容来自WiX更早的版本,当时XmlFile确实不支持卸载回滚,该特性是后续3.x版本迭代中补充的。

2 需求实现方案

你需要的「安装时部署XML文件、修改文件、卸载时直接删除整个文件」的需求,不需要额外调整XmlFile的属性,按常规逻辑编写组件即可:
你部署的XML文件属于当前安装包独占的资源,只要承载该文件的Component没有设置Permanent="yes",卸载时MSI会直接删除整个XML文件,完全不需要考虑XmlFile的修改要不要回滚的问题——不管修改有没有被回滚,整个文件都会被清理。

示例代码如下:

<Component Id='Settings' Guid='替换为你自己的GUID'>
  <!-- 部署XML文件,默认卸载时会被删除 -->
  <File Id='XmlSettings' Name='settings.xml' DiskId='1' Source='settings.xml' Vital='yes' />
  <!-- 这里的XmlFile不需要设置Permanent属性,默认即可,哪怕设置为yes也不影响最终文件删除 -->
  <util:XmlFile Id='XmlSettings1' File='[INSTALLDIR]settings.xml'
    Action='createElement' Name='add' ElementPath='//settings' Sequence='1' />
  <!-- 其余XmlFile修改逻辑按你的需求补充 -->
</Component>

如果要进一步避免极端情况的问题,也可以主动给所有XmlFile元素加上Permanent="yes",跳过无意义的修改回滚步骤,卸载时直接删除文件即可,效率更高。


内容的提问来源于stack exchange,提问作者Katie Kilian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:45:02