Windows installer 如何强制主要升级不使用旧安装包切换到维护模式?

Windows installer 如何强制主要升级不使用旧安装包切换到维护模式?,windows-installer,upgrade,maintenance-mode,Windows Installer,Upgrade,Maintenance Mode,我有一个安装程序,我想用于一个主要的升级。我已经做了以下工作: 增加了版本号(从a.b.c增加到a.b.c+1) 更改了产品代码 保持相同的升级代码 在升级表中创建适当的条目 已更改现有组件的组件ID 更改了安装程序包的名称 更改了PackageCode 基本上,我已经尽了我所能迫使MSI将其视为一次重大升级 然而,当我尝试安装这个新软件包时,安装程序日志显示“产品注册:进入维护模式”,并继续尝试查找旧的安装程序文件(这失败了,因为新安装程序位于与原始安装不同的文件夹中,甚至不是我想要的)

我有一个安装程序,我想用于一个主要的升级。我已经做了以下工作:

  • 增加了版本号(从a.b.c增加到a.b.c+1)
  • 更改了产品代码
  • 保持相同的升级代码
  • 在升级表中创建适当的条目
  • 已更改现有组件的组件ID
  • 更改了安装程序包的名称
  • 更改了PackageCode
基本上,我已经尽了我所能迫使MSI将其视为一次重大升级

然而,当我尝试安装这个新软件包时,安装程序日志显示“产品注册:进入维护模式”,并继续尝试查找旧的安装程序文件(这失败了,因为新安装程序位于与原始安装不同的文件夹中,甚至不是我想要的)


我错过了什么?为什么安装程序会立即切换到维护模式,而不是执行主要升级?

事实证明,这是由于Visual Studio的Wise安装程序插件中存在错误造成的。显然,它会感到困惑,并开始将相同的包代码提供给它作为构建的一部分生成的所有.msi包(不管.wsi文件中的包代码)。

我刚刚注意到Wise的VS插件给新安装程序的包代码与原始安装程序的包代码相同(即使在UI中它们是不同的…构建的MSI具有相同的GUID)。我将尝试修复此问题,但在此期间,如果有人知道还有什么可能是错误的,我将非常感谢您的帮助。新更新:Visual Studio的Wise插件似乎有一个令人讨厌的小错误:如果在解决方案中有多个.wsi/.wsproj,构建它们将为它们提供所有相同的包代码,而不管实际的包是什么在.wsi中指定的年龄代码。