1

我试图在升级时抑制删除现有产品的过程。我正在使用以下代码:

<RemoveExistingProducts Suppress='yes'></RemoveExistingProducts>

它抛出一个错误说:请停止覆盖基本定义

4

2 回答 2

2

您可能误解了升级是什么——这似乎是一个相当普遍的误解。

主要升级 (RemovePreviousVersions) 不是补丁、修补程序或任何您可能认为更新当前安装产品中的文件的东西。主要升级是对完整工作产品的完整产品安装,如果安装了早期版本,则恰好包括删除早期版本。执行重大升级的要求包括拥有更高的产品版本和不同的产品代码。

另一方面,如果您想安装同一产品的两个“副本”,那么就不要使用主要升级,而是更改您的产品代码(和包代码)。您将安装同一产品的两份副本,是否一切正常取决于应用程序的两份副本是否能很好地协同工作,以及您是否可以卸载其中一份而不损坏另一份。

于 2015-04-30T22:45:54.750 回答
0

为什么要压制升级?RemoveExistingProducts是实施Windows Installer 主要升级的核心部分- 升级到更高版本应用程序的标准方法 - 例如从版本 1.0 到 2.0。RemoveExistingProducts 操作将根据升级表中的设置删除或检查系统上是否存在现有版本。您可以创建此表以卸载您想要的任何 MSI 文件,并且您可以添加条目来检查是否安装了某些软件包,然后中止并警告用户安装了以前的版本 - 通常这用于进行较低版本的设置知道安装了更高版本然后中止。

更多关于通过 Wix 进行升级的信息:http: //wix.tramontana.co.hu/tutorial/upgrades-and-modularization

或许可以快速查看这些“Wix 快速入门”建议:MSI 与 nuget 包:哪个更适合持续交付?

于 2015-04-30T16:33:33.230 回答