gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:53:07 27 4
gpt4 key购买 nike

我有一个组件,它运行几个 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/

27 4 0