25

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

4

5 回答 5

28

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

  1. 将删除以前的安装设置为 True
  2. 将检测新版本设置为 True
  3. 您的 C# 程序的版本必须随着每次部署而增加
  4. 您应该将安装程序的版本更改为更高的版本,它会要求您更改产品代码,请选择“是”。
  5. 不要更改您的升级代码,让它保持不变。

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

于 2010-06-11T17:15:47.800 回答
13

我尝试了一些场景,也许这会帮助某人节省一些时间

如果程序集版本更改并且项目安装程序版本更改(ProductCode Guid 也更改)-> 应用程序安装在现有的顶部-> dll 和 exe 版本得到更新-> 如果安装到的路径不同,则删除现有的初始安装的项目文件从他们安装的地方。(以及此后制作的文件)

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

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

如果仅项目安装程序版本更改(ProductCode Guid 也更改)-> MSI 完成安装过程,但 dll 和 exe 不更改版本-它们是根据程序集版本,并替换为相同程序集构建版本的文件-> IF安装到的路径不同,现有的初始安装的项目文件将从安装位置删除。(此后制作的任何文件仍然存在)

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

于 2010-06-24T23:45:56.207 回答
6

设置设置项目属性RemovePreviousVersions True

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

于 2010-06-11T17:17:02.850 回答
0

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

您需要更改 RemoveExistingProducts 的序列号,它必须安排在 Install Validate 操作和 InstallInitialize 之间。您可以通过 ORCA 执行此操作

对于 Ex InstallValidate=1400 InstallInitialize =1500

然后 RemoveExistingProducts =1450

于 2013-12-10T05:43:42.220 回答
-1

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

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

2.打开项目助手后,您会看到应用信息,在这里您可以输入您要更改的版本。

于 2019-06-17T18:40:34.763 回答