Wix 安装程序,Windows 控制面板显示 2 个条目并且卸载显示为灰色

Wix installer, Windows control panel shows 2 entries and uninstall is greyed out

所以我要接管一个预先存在的安装程序项目,但我真的不太了解 Wix 和一般的安装程序,所以我只是想知道我应该研究这个安装程序的哪些方面.

我遇到这个问题,我的 Wix 安装程序生成的 .msi 安装正确。但是在 Windows 10 上,“应用程序和功能”页面显示了我的应用程序的 2 个条目,并且两个条目的 "Uninstall" 按钮都变灰了。

我完全不知道 .wxs 的哪一部分负责控制面板中显示的内容,我们将不胜感激。

WiX 快速入门:WiX 学习起来并不简单 - 有一个学习曲线,但它也不是火箭科学.也许我可以建议 this WiX quick start recommentations piece(混乱,但投票 - 一定有帮助)。特别是 "Hello World" 部分可能会有所帮助 - 如果您不了解 WiX。

答案:关于具体问题:

  • Failed Major UpgradeAdd / Remove Programs中的两个条目一般表示重大升级失败,因此现在您的产品安装了两个版本,而不是一个(重大升级在技术上是卸载旧版本并安装新版本 - 在后台)。这是关于该主题的长答案:.
  • Embedded Setup.exe: MSI 也可以安装 legacy-style setup.exe 作为其自身安装的一部分。这可能导致 Add / Remove Programs.
  • 中的多个条目
  • MajorUpgrade:显然,要修复主要升级,您需要查看 WiX 源。通常人们使用 MajorUpgrade 元素来配置主要升级(使用其他元素有更详细的选项)。有关详细信息,请参阅下面的单独部分。
  • 产品代码:只要您安装了同一产品的两个版本,它们的产品代码就会不同。要查找产品代码,这里有一些建议: 获得产品代码后,您可以通过 msiexec.exe 命令行卸载。
  • Uninstall: 您可以通过多种方式卸载MSI文件,这里是一个参考:Uninstalling an MSI file from the command line without using msiexec。建议你在section 3中使用msiexec.exe,如下:

    msiexec.exe /x {Product-Code}
    

WiX 重大升级:WiX 引入了 "convenience element" 来控制重大升级。这个想法是为了让实施更容易。以下是一些详细信息:Majorupgrade or Upgrade ID which is preferred for Major upgrade?

内联:

<MajorUpgrade DowngradeErrorMessage="Can’t downgrade." />

如您所见,新方法处理起来简单得多,而旧方法则具有充分的灵活性。我不知道你的消息来源使用哪种方法。

主要升级技术:主要升级的关键问题是升级代码保持稳定(一些方法可以在没有,但暂时保留)。此外,您还需要一个新的产品代码、一个升级的产品版本(前 3 位数字之一)和一个新的包装代码。如果无法进行任何这些更改,您可以在添加/删除程序中获得两个条目(升级失败,同时 运行)。


部分链接:

感谢 Stein Åsmul 提供的 link 文档。我能够弄清楚为什么我的 msi 正在做它正在做的事情。

主要的 .wxs 正在使用 属性

禁用删除
<Property Id="ARPNOREMOVE" Value="1" />

所以删除它允许我再次从 Windows 控制面板卸载。

控制面板中出现 2 个条目的原因是我们在文件夹中添加了一堆注册表项

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\

这里需要一些注册表项背后有一些原因,但至少现在我知道为什么我可以希望解决它们。希望这对将来可能 运行 解决全新安装的重复条目问题的任何人有所帮助。