【发布时间】:2019-06-18 02:40:34
【问题描述】:
我有一个部署项目,它不允许我安装旧版本。 msi 文件说首先从添加/删除程序中卸载程序。这不是一个好的用户体验。我该怎么做才能让安装程序先删除软件,然后再安装新版本?
【问题讨论】:
-
这和 C# 编程语言有什么关系?
标签: deployment windows-installer deployment-project
我有一个部署项目,它不允许我安装旧版本。 msi 文件说首先从添加/删除程序中卸载程序。这不是一个好的用户体验。我该怎么做才能让安装程序先删除软件,然后再安装新版本?
【问题讨论】:
标签: deployment windows-installer deployment-project
这很棘手,您必须执行以下步骤,
如果您没有正确执行第 3 步,安装程序仍会安装并保留旧文件,如果您更改了内容,则每个文件的文件版本必须是新的。
【讨论】:
我尝试了一些场景,也许这会帮助某人节省一些时间
如果程序集版本更改并且项目安装程序版本更改(ProductCode Guid 也更改) -> 应用安装在现有应用之上 -> dll 和 exe 版本得到更新 -> 如果安装到的路径不同,现有的初始安装的项目文件将从安装位置删除。 (以及此后制作的文件)
如果程序集版本更改并且项目安装程序版本更改(没有更改 ProductCode Guid) -> 要求用户手动删除应用程序 -> 如果他们先从控制面板中删除,则可以安装应用程序并将 dll 和 exe 更新到新版本
如果只有程序集版本更改,或者只有项目安装程序版本更改(没有 ProductCode Guid 更改) -> 要求用户手动删除应用程序 -> 如果他们先从控制面板中删除,则可以安装应用程序并将 dll 和 exe 更新到新版本
如果只有项目安装程序版本发生变化(ProductCode Guid 也发生变化) -> MSI 完成安装过程,但 dll 和 exe 不更改版本 - 它们与程序集版本一致,并替换为相同程序集构建版本的文件 -> 如果安装到的路径不同,现有的初始安装的项目文件将从安装位置删除。 (此后制作的任何文件仍然存在)
如果项目安装程序版本发生变化(ProductCode Guid 也发生变化)并且程序集版本低于安装版本 -> 安装将开始,最终用户被告知安装失败,因为旧版本。
【讨论】:
设置设置项目属性RemovePreviousVersions True
但您必须在两个设置应用程序中使用相同的 UpgradeCode
【讨论】:
您有时可以在安装新版本后执行此操作,旧产品将保持不变。
您需要更改 RemoveExistingProducts 的序列号,它必须安排在 安装 Validate 操作和 InstallInitialize 。您可以通过 ORCA 完成此操作
对于 Ex InstallValidate=1400 安装初始化 =1500
然后 RemoveExistingProducts =1450
【讨论】:
如果您使用的是visual studio 2012或更高版本,
2.打开项目助手后会看到应用信息,在这里可以输入你要修改的版本。
【讨论】: