基于用户的Installer Project中以前版本的删除

时间:2018-08-24 06:21:15

标签: installation visual-studio-2017 windows-installer installer setup-project

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

我已将当前安装程序的UpgradeCode设置为与先前版本相同,就像我在文章中阅读的一样。

我尝试将RemovePreviousVersions设置为True,但是它会静默卸载以前的版本;有什么方法可以让用户决定吗?

想法是,用户应该能够:

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

更新

只是一个信息,我对工具不了解,我只是在尝试 Installer Project ,但只要有必要,我愿意学习其他工具。一个MSI。

更新#2

我能够在Advanced Installer中完成此操作,但这是一项付费功能,所以...我在想,也许我也可以在Installer Project或其他功能中进行此操作。有人吗?

2 个答案:

答案 0 :(得分:1)

Pa咽炎 :此要求不适用于MSI范例。为了支持不同版本的并行部署,必须调整安装程序本身和应用程序以使其和平共存,以免它们意外地覆盖相同的数据文件和注册表项,不要为文件关联而战。等...

必备品吗? :这是绝对要求还是“必备”?如果要实现此目的,则实际上将使每个安装版本独立于旧版本,并可能使用自定义操作触发旧版本的卸载,或向升级表添加临时行。不平凡。不是火箭科学。没有我尝试过的东西。因此,您会在提出建议时感到两难。

并排 :为了使每个设置都能“并排”,我将使用WiX的自动导航和“移动目标”目标文件夹,其版本号嵌入在安装文件夹名称中。我也可能会为每个版本设置一个新的升级代码,尽管您也可以不这样做。通常,最好使升级代码相同以识别相关产品。


过去的爆炸 :还有其他可能性。您可以使用 multi-instance transforms ,也可以使用 virtualization 。我之前在这里写过: Installing Multiple Instances by different msi having same Package Code 。请略读。

答案 1 :(得分:1)

我认为,执行此操作的唯一方法是拥有两个MSI文件。它们都将具有新的产品代码,它们是:

  1. 具有相同的UpgradeCode并将VS RemovePreviousVersions设置为true以执行替换升级。

  2. 具有一个不同的UpgradeCode,因此它是一个新产品,将在上一个仍在安装的状态下安装。

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

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