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

问题描述:

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

+1

这是什么都与C#编程语言呢? – 2010-06-11 17:35:12

这是棘手的,你必须做以下步骤,

  1. 集中删除以前安装的真
  2. 设定的检测为真新版本
  3. 你的C#程序的版本必须在每次部署增加
  4. 您应该将安装程序的版本更改为更高版本,并会要求您更改产品代码,请选择是。
  5. 不要更改升级代码,让它相同。

如果您没有正确执行第三步,安装程序仍然会安装并保留旧文件,如果您更改了内容,则每个文件的文件版本必须是新的。

+0

我认为'远程以前的安装'的意思是'RemovePreviousVersions' – CRice 2010-06-24 23:41:19

+0

关于如何在不改变ProductCode guid的情况下实现这一点的任何想法? (小的更新)http://*.com/questions/3114637 – CRice 2010-06-24 23:49:40

+0

随着“你的C#程序的版本必须随着每次部署而增加”,你的意思是每个感动的程序集,不是吗? – mbx 2012-09-10 14:32:06

设置安装项目属性RemovePreviousVersions

但你必须使用相同的的UpgradeCode在这两个安装应用程序

+0

+1感谢指出了相同的升级代码。 – 2010-06-11 17:33:03

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

如果组件版本发生变化并且项目安装程序版本发生更改(产品代码Guid也发生变化) - >应用程序安装在现有的顶部 - > dll和exe版本得到更新 - >如果安装路径不同,现有的最初安装的项目文件将从安装位置删除。 (既然做文件保留)

如果集版本的变化和项目安装程序版本的变化(不包括产品代码的Guid改变) - >要求用户手动删除该应用程序 - 如果他们继续前进,从控制面板中先删除> ,应用程序就可以进行安装和DLL和EXE文件可以更新到新版本

如果只有集版本的变化,或只项目安装版本的变化(不包括产品代码的Guid改变) - >要求用户手动删除该应用程序 - >如果他们继续并先从控制面板中删除,则可以安装应用程序,并将dll和exes更新到新版本

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

如果项目安装的版本变化(与产品代码的Guid也在发生变化)和装配的版本比安装的版本 低 - >安装将开始,在最终用户被告知安装失败的旧版本。

+1

有帮助..投票。 – Munavvar 2017-02-07 10:54:20

安装新版本后,有时可以这样做旧产品将保持不变。

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

做到这一点对于防爆InstallValidate = 1400 InstallInitialize = 1500

然后RemoveExistingProducts = 1450