2008-09-02 149 views
9

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

回答

9

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

您确定部署项目的'Version'属性已增加吗?此属性与应用程序中的程序集版本无关,如果MSI的Version属性与您尝试覆盖的版本属性相同,则会显示错误消息。

+1

如何获取部署项目的'版本'属性?具体步骤是什么? – sagesky36 2013-01-21 15:29:40

5

增加项目的版本号。

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

3

您需要更改每个版本之间的ProductCode,如果您不这样做,您将看到您所看到的行为。 ProductCode在项目属性中可见。查看MSDN Online Help for ProductCode以更好地理解。

+1

只需更改主要升级的产品代码,小的频繁更新应该保留相同的产品代码并只增加版本。 更改产品代码实际上是Windows安装程序眼中的新应用程序。 – saschabeaumont 2008-09-12 04:49:52

0

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

祝你好运。

1

这是稍微复杂一些:

要自动删除安装项目安装的应用程序的早期版本,它是需要:

  1. 增量的版本属性(例如,从1.0.0到1.0.1 ...也在第三个位置工作)
    • 版本是安装程序项目的属性,它标识哪个版本的应用程序安装ED
  2. 更改产品代码属性,因此安装程序知道,这是不执行相同的安装程序两次
    • 产品代码是安装项目的属性时,Visual Studio提供了自动更改它,当版本财产变更
  3. 保留“UpgradeCode”属性的值。
    • 的UpgradeCode也安装项目的属性
    • 它需要保持完整的“升级行”中相同,所以安装知道什么升级
  4. 如果您也想删除旧的应用程序版本从控制面板的软件列表中设置RemovePreviousVersions为true
+0

我除了以前的版本之外都做了所有不是由.msi卸载的。我有VB脚本来改变成功构建版本和产品代码。并且RemovePrevious Version属性也设置为true。请帮助任何想法?如何克服。 – 2013-07-12 05:59:55