我试图在升级时取消删除现有产品的过程。我正在使用以下代码:
<RemoveExistingProducts Suppress='yes'></RemoveExistingProducts>
它抛出一个错误:请停止覆盖基本定义
您可能误解了什么是升级——这似乎是一个相当常见的误解。
主要升级(RemovePreviousVersions)不是修补程序、修补程序或您可能认为是更新当前安装的产品中的文件的任何程序。主要升级是对完整工作产品的完整产品安装,如果安装了早期版本,则恰好包括删除早期版本。执行重大升级的要求包括具有更高的产品版本和不同的产品代码。
另一方面,如果你想安装同一产品的两个"副本",那么就不要使用重大升级,而是更改你的产品代码(和包代码)。您将安装同一产品的两个副本,这一切是否有效取决于应用程序的两个拷贝是否能很好地配合使用,以及您是否可以在不损坏另一个的情况下卸载其中一个。
为什么要取消升级RemoveExistingProducts是实现Windows Installer主要升级的核心部分,这是升级到更高版本应用程序的标准方式,例如从1.0版升级到2.0版。RemoveExistingProducts操作将根据升级表中的设置删除或检查系统上是否存在现有版本。您可以编写此表以卸载所需的任何MSI文件,还可以添加检查是否安装了某些软件包的条目,然后中止,并向用户发出安装了以前版本的警告-通常这用于使较低版本的设置了解已安装的较高版本,然后中止。
有关通过Wix升级的更多信息,请点击此处:http://wix.tramontana.co.hu/tutorial/upgrades-and-modularization.
也许可以快速查看这些"Wix快速启动"建议:MSI与nuget包:哪一个更适合连续交付?