我有一个部署项目,不允许我安装旧版本。 msi文件说首先从添加/删除程序卸载程序。这不是一个好的用户体验。我该怎么做才能让安装程序先删除软件然后安装新版本?
答案 0 :(得分:27)
这很棘手,您必须执行以下步骤,
如果您没有正确执行第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或更高版本,则
2。打开项目助手后,您将看到“应用程序信息”,您可以在此处输入要更改的版本。