关于版本控制:MSI Installer在不删除先前安装的情况下失败

关于版本控制:MSI Installer在不删除先前安装的情况下失败

MSI Installer fails without removing a previous install

我已经建立了一个MSI,我想对其进行部署并经常更新。 不幸的是,当您安装MSI,然后尝试安装同一MSI的较新版本时,它将失败,并显示类似消息"已安装该产品的另一个版本。此版本无法继续安装..."。 MSI是使用Visual Studio 2008安装项目构建的。 我试图将"删除以前的版本"属性设置为true和false,以使新版本覆盖较早的安装,但是没有任何效果。 在以前的公司中,我知道Wise和Advanced Installer构建的安装程序没有这个问题。 有我缺少的设置吗? 还是VS 2008安装项目不支持我想要的功能?


我已经使用VS 2005 Pro构建了许多MSI,它们可以正确执行此操作。

您确定部署项目的"版本"属性已增加吗?此属性与应用程序中程序集的版本无关,并且这是错误消息,您将看到MSI的Version属性是否与您尝试覆盖的版本相同。


增加项目上的版本号。

在VS中,选择设置应用程序的节点,然后按F4键以查看属性。找到版本字段,然后增加它。


您需要在每个版本之间更改ProductCode,如果不这样做,您将得到所看到的行为。在项目属性中可以看到ProductCode。请查阅MSDN联机帮助中的ProductCode以更好地了解。


这有点复杂:

要在Setup Project中自动删除以前版本的已安装应用程序,需要执行以下操作:

  • 递增Version属性(例如,从1.0.0更改为1.0.1 ...也在第3个位置更改)

    • 版本是安装程序项目的属性,用于标识安装了哪个版本的应用程序
  • 更改ProductCode属性,以便安装程序知道它不是两次执行的同一安装程序

    • ProductCode是安装程序项目的属性,当Version属性更改时,Visual Studio会自动对其进行更改
  • 保留" UpgradeCode"属性的值。

    • UpgradeCode也是安装程序项目的属性
    • 它需要在整个"升级行"中保持不变,因此安装程序知道要升级什么
  • 如果您还想从控制面板的软件列表中删除旧的应用程序版本,请将RemovePreviousVersions设置为true

  • 从XP转到Win7时遇到了同样的问题。为了解决这个问题,我必须将DetectNewerInstalledVersion设置为False。另外,正如其他人所提到的,您需要增加安装项目的版本。

    祝好运。


    推荐阅读