我使用 WIX 安装测试产品。使用默认的 wix 设置非常简单。
如果我设置产品 id="*",安装、重建并再次安装,程序列表中有两个产品。为什么?
我的产品:
<Product Id="*" Name="SetupProject1" Language="1033" Version="1.0.6.4" Manufacturer="Timyrlan" UpgradeCode="B3CB410C-6D45-44F0-9920-81E43A54B3ED">
附言如果我更改版本的第 4 位数字,也会出现同样的问题。如果我更改 3 位数,一切正常
1.0.0.0->1.0.0.1 - 问题
1.0.0.0->1.0.1.0 - 工作正常
为什么要安装两次?如何使用最后一位数字升级产品?
最佳答案
忽略数字:摘自 ProductVersion property
的 MSI SDK 文档:
"请注意,Windows Installer 仅使用产品版本的前三个字段。如果您在产品版本中包含第四个字段,安装程序将忽略第四个字段...至少其中一个ProductVersion 的三个字段必须更改才能使用升级表进行升级。
“
AllowSameVersionUpgrades :有WiX概念:AllowSameVersionUpgrades="yes"
- 我不喜欢 - 有些人使用它来允许使用第 4 位数字进行升级。我没有列出所有由此产生的问题(再次强调:我不喜欢这个概念)。也许在这里看看:Wix MajorUpgrade problems .
高级升级表:忘记了一个重要链接。如何获得升级表的细粒度控制:Adding entries to MSI UpgradeTable to remove related products .以及降级问题:Run Wix Custom action only during uninstall and not during Major upgrade .
更多有用链接:
- WIX does not uninstall older version (主要升级的常见问题列表)
- WiX Tips and Tricks (通常有很多关于 WiX 的进一步链接)
- How do I avoid common design flaws in my WiX / MSI deployment solution? (注意常见的 MSI/WiX 设计缺陷)
链接:
- WIX (remove all previous versions) (按产品代码、升级代码、产品名称卸载)
- Doing Major Upgrade in Wix creates 2 entries in Add/Remove Programs (主要升级 - “旧的手动方式”)
- Installshield major upgrade doesn't uninstall old version (MSI API 调用)
关于c# - Windows 安装程序 (wix) 安装产品两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57809294/