微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

小升级在删除文件时失败

如何解决小升级在删除文件时失败

带有 WIX 安装程序的桌面应用程序。应用程序的 A 版包含以下文件:a.dll、b.dll、c.dll。 版本 B 包含文件:b.dll、c.dll、d.dll。 执行从 A 版本到 B 版本的小升级后,没有文件被替换。我认为问题出在 A 版本中存在的 .dll 文件中,而 B 中不存在。

我们不能在小升级期间删除文件吗? 当a.dll附加到B版本时,升级成功。

解决方法

这违反了组件规则。只有主要升级才能移除组件。

https://docs.microsoft.com/en-us/windows/win32/msi/changing-the-product-code

如果更新符合以下任一情况,则必须更改产品代码:

  • 从现有功能中删除了一个组件。

也就是说,有一个解决方法。将组件设为 Transitive = True 并为组件提供一个始终评估为 false 的条件。您仍必须在 MSI 中包含该文件,但如果您愿意,它可以是零字节文件。

这将“刺穿”组件。就 MSI 而言,该组件仍然存在且规则并未违反,但该组件将从机器中移除,因为它会重新评估组件状况并要求将其移除。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。