在旧版本上安装新版本的部署项目

时间:2010-06-11 17:10:29

标签: deployment windows-installer deployment-project

我有一个部署项目,不允许我安装旧版本。 msi文件说首先从添加/删除程序卸载程序。这不是一个好的用户体验。我该怎么做才能让安装程序先删除软件然后安装新版本?

5 个答案:

答案 0 :(得分:27)

这很棘手,您必须执行以下步骤,

  1. 将删除以前的安装设置为True
  2. 设置将新版本检测为True
  3. 您的C#程序的版本必须随着每次部署而增加
  4. 您应该将安装程序的版本更改为更高版本,它会要求您更改产品代码,选择是。
  5. 请勿更改升级代码,并将其保持不变。
  6. 如果您没有正确执行第3步,安装程序仍会安装并保留旧文件,如果您更改了内容,则每个文件的文件版本必须是新的。

答案 1 :(得分:13)

我试了几个场景,也许这会帮助别人节省一些时间

如果程序集版本更改并且项目安装程序版本发生更改(同时ProductCode Guid也会更改) - >应用程序安装在现有应用程序的顶部 - > dlls和exe版本得到更新 - >安装的IF路径不同,现有的最初安装的项目文件将从安装位置删除。 (以及保留的文件)

如果程序集版本更改并且项目安装程序版本更改(没有更改ProductCode Guid) - >要求用户手动删除该应用程序 - >如果他们继续先从控制面板中删除,那么可以安装应用程序,并将dll和exes更新到新版本

如果仅更改程序集版本,或仅更改项目安装程序版本(不更改ProductCode指南) - >要求用户手动删除该应用程序 - >如果他们继续先从控制面板中删除,那么可以安装应用程序,并将dll和exes更新到新版本

如果仅项目安装程序版本发生更改(同时ProductCode Guid也会更改) - > MSI经历了安装过程,但是dll和exe不会更改版本 - 它们是按照程序集版本,并且被替换为相同程序集构建版本的文件 - >安装的IF路径不同,现有的最初安装的项目文件将从安装位置删除。 (保留的任何文件保留)

如果项目安装程序版本发生更改(同时更改了ProductCode Guid),并且程序集版本低于已安装的版本 - >安装将开始,最终用户被告知安装失败为旧版本。

答案 2 :(得分:5)

设置安装项目属性 RemovePreviousVersions True

但您必须在两个设置应用程序中使用相同的 UpgradeCode

答案 3 :(得分:0)

您可以在安装新版本后执行此操作,旧产品将保持不变。

您需要更改RemoveExistingProducts的序列号,它必须在两者之间进行安排 安装验证操作和InstallInitialize。你可以通过ORCA

来做到这一点

对于Ex InstallValidate = 1400        InstallInitialize = 1500

然后RemoveExistingProducts = 1450

答案 4 :(得分:-1)

如果您使用的是Visual Studio 2012或更高版本,则

  1. 如果解决方案文件夹下已有安装程序文件夹,只需打开安装程序下的项目助手,然后双击它即可。

2。打开项目助手后,您将看到“应用程序信息”,您可以在此处输入要更改的版本。