installation - WIX XmlConfig 操作未在补丁回滚时运行

标签 installation wix uninstallation

我有一个组件,它运行几个 XmlConfig 操作:一个在安装时,一个在卸载时:

  <Component Id="machine.config.Update" Guid="573DF5B0-438D-498d-8919-C4B96835C1EF">
    <RegistryKey Root="HKLM" Key="[REGISTRYKEY]\Settings\[TITLE]" Action="createAndRemoveOnUninstall">
      <RegistryValue Action="write" Type="integer" Name="MACHINEMEMORYLIMIT" Value="1" KeyPath="yes"/>
    </RegistryKey>
    <util:XmlConfig
      Id="CacheNode.memoryLimit.add"
      File="[WindowsFolder]\Microsoft.NET\[FRAMEWORKDIR]\v2.0.50727\CONFIG\machine.Config"
      Action="create"
      ElementPath="/configuration/system.web/processModel"
      Name="memoryLimit"
      Node="value"
      On="install"
      Value="90" />
    <util:XmlConfig
      Id="CacheNode.memoryLimit.remove"
      File="[WindowsFolder]\Microsoft.NET\[FRAMEWORKDIR]\v2.0.50727\CONFIG\machine.Config"
      Action="delete"
      ElementPath="/configuration/system.web/processModel"
      VerifyPath="/configuration/system.web/processModel"
      Name="memoryLimit"
      Node="value"
      On="uninstall" />
  </Component>

该组件是我可以安装和回滚的补丁的一部分。问题是当我卸载补丁时,卸载操作不会触发。奇怪的是,如果我将其更改为 On="install",则会执行相同的 XmlConfig 操作。我发现卸载时注册表项已被正确删除。为什么 XmlConfig 操作也没有触发?我检查了日志,没有看到任何错误或解释为什么没有发生。

更新: XmlConfig 操作在执行完全卸载时起作用。只是不进行补丁回滚。

最佳答案

从 wix-users 邮件列表中得到答案。

罗布·门兴: “在补丁中添加自定义操作效果不太好。补丁本质上是将转换应用于现有 MSI,然后修复 MSI。在卸载补丁的情况下,转换将被删除并修复 MSI。显然,如果自定义操作操作会随着转换被删除,然后它就没有机会运行。

Windows Installer 使用特殊的魔法来跟踪转换前后 MSI 的状态,以便他们可以正确删除数据。”

他们还讨论了 MSI 4.5 中的一项功能可以让您做到这一点,但 WIX 需要与早期版本保持兼容,并且仍然存在一些数据存储问题。

简而言之,补丁卸载的自定义操作在 WIX 中不起作用。

关于installation - WIX XmlConfig 操作未在补丁回滚时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4708956/

相关文章:

mongodb - windows 7 64 位正在安装 32 位的 meteor

android - 如何捕获设备上的应用程序卸载并让服务器知道这一点(iOS/Android)

netbeans-7 - 无法卸载NetBeans 7.3

installation - WiX bundle :condition - util:RegistrySearch variable always false

c# - 路径之谜中的非法字符

wix - 如何根据磁盘大小动态修改 Wix DiskCostDlg 消息?

django - 如何从我的项目中卸载 dj-stripe?

air - 我应该为 Adob​​e AIR 应用程序获取哪个代码签名证书(.exe、.dmg、.deb、.rpm)

ruby-on-rails - Rails 在 Ubuntu 上安装无法加载 mkmf?

installation - Inno Setup - 没有 64 位数据类型?