c# - Windows 安装程序 (wix) 安装产品两次

标签 c# wix windows-installer

我使用 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 .

更多有用链接:


链接:

关于c# - Windows 安装程序 (wix) 安装产品两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57809294/

相关文章:

c# - 延迟定时器循环

c# - Application_End() 无法通过 HttpContext.Current.Cache[key] 访问缓存

c# - 存储密码哈希的最安全位置

wix 生成新的升级代码

wix - 如何检测net core 3.1 windows desktop app runtime是否安装

c# - Stackoverflow 样式 URL(自定义传出 URL)

java - 用 Java 创建可执行安装程序

WiX、Windows 安装程序摘要?

c# - 在 WIX 自定义操作中使用时,System.IO.FileInfo 将意外的字符串添加到路径中

visual-studio-2015 - MSBuild 错误 : MSBUILD : error MSB1009: Project file does not exist