在安装程序项目中基于用户删除以前的版本

问题描述 投票:1回答:2

如何创建一个MSI安装程序,让用户决定是否应该保留以前的版本?

我已将当前安装程序的UpgradeCode设置为与之前版本相同,正如我在文章中所读到的那样。

我已经尝试将RemovePreviousVersions设置为True,但它会默默地卸载以前的版本;有没有办法让用户做出决定?

这个想法是,用户应该能够:

  • 安装最新的软件版本
  • 安装最新的软件版本
  • 最后;与前一个软件并排安装最新软件版本。

更新

只是一个信息,我不知道这些工具,我只是尝试安装程序项目,但我愿意在必要时学习另一个工具,只要输出是MSI。

更新#2

我能够在高级安装程序中执行此操作,但它是一个付费功能,所以...我想也许我也可以在安装程序项目中执行此操作。任何人?

installation visual-studio-2017 windows-installer installer setup-project
2个回答
1
投票

Paradigmatitis:此要求不适用于MSI范例。为了支持不同版本的并行部署,必须调整设置本身和应用程序以便和平共存,以便它们不会意外地覆盖相同的数据文件和注册表项,不要争夺文件关联等等......

很高兴?:这是一个绝对的要求还是一个“很高兴”的问题?如果我要实现这一点,我基本上会使每个安装版本独立于旧版本,并且可能使用自定义操作来触发旧版本的卸载,或者将临时行添加到升级表中。不是微不足道的。不是火箭科学。不是我曾尝试过的东西。所以你看到了提出建议的困境。

并排:为了使每个设置能够“并排”,我将使用WiX的自动指南和“移动目标”目标文件夹,其中版本号嵌入在安装文件夹名称中。我也可能为每个版本设置一个新的升级代码,尽管你也可以不用它。保持升级代码相同以识别相关产品通常是好的。


从过去的爆炸:还有其他一些可能性。你可以使用multi-instance transforms,你可以使用virtualization。我在此之前已经写过这个:Installing Multiple Instances by different msi having same Package Code。请给它一个脱脂。


1
投票

在我看来,你能做到这一点的唯一方法是拥有两个MSI文件。它们都有新的ProductCodes,它们是:

  1. 具有相同的UpgradeCode并将VS RemovePreviousVersions设置为true以进行替换升级。
  2. 有一个不同的UpgradeCode,因此是一个新产品,将安装,而前一个仍然存在。

然后,您需要一个启动程序,询问用户所需的,升级或并排,并启动所需的程序。

基本问题是安装可能不是“并排”,它可能是“在...之上”。是什么阻止了新文件中的文件替换了其他已安装产品中的现有文件?如果快捷方式具有相同的名称,用户如何知道使用哪个名称,该怎么办?您是否需要阻止两个版本的应用程序同时运行?安装中是否有“单一用途”项目,例如服务(不能有两个相同名称)或命名事件,互斥体等?安装wo版本时的升级策略是什么?

© www.soinside.com 2019 - 2024. All rights reserved.