9

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

4

5 回答 5

9

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

您确定部署项目的“版本”属性已增加吗?此属性独立于应用程序中程序集的版本,如果 MSI 的 Version 属性与您尝试覆盖的版本相同,您将看到此错误消息。

于 2008-09-02T20:52:03.190 回答
6

增加项目的版本号。

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

于 2008-09-02T20:52:45.263 回答
3

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

于 2008-09-02T21:11:49.147 回答
1

这有点复杂:

要在安装项目中自动删除以前版本的已安装应用程序,需要:

  1. 增加Version属性(例如,从 1.0.0 到 1.0.1 ...也可以在第三个位置更改)
    • 版本是安装程序项目的属性,用于标识安装了哪个版本的应用程序
  2. 更改ProductCode属性,以便安装程序知道它不是同一个安装程序执行了两次
    • ProductCode是安装程序项目的属性,Visual Studio 提供在版本属性更改时自动更改它
  3. 保留“UpgradeCode”属性的值。
    • UpgradeCode也是安装程序项目的属性
    • 它需要在整个“升级线”中保持不变,因此安装人员知道要升级什么
  4. 如果您还想从控制面板的软件列表中删除旧的应用程序版本,请将RemovePreviousVersions设置为 true
于 2011-04-20T12:09:25.777 回答
0

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

祝你好运。

于 2010-01-08T11:56:14.403 回答