Visual studio 2017 基于用户删除安装程序项目中的早期版本

Visual studio 2017 基于用户删除安装程序项目中的早期版本,visual-studio-2017,windows-installer,installation,setup-project,Visual Studio 2017,Windows Installer,Installation,Setup Project,如何创建MSI安装程序,让用户决定是否保留以前的版本 正如我在一篇文章中读到的,我已经将当前安装程序的升级代码设置为与上一版本相同 我尝试将RemovePreviousVersions设置为True,但它会以静默方式卸载以前的版本;有什么方法可以让用户做出决定吗 其理念是,用户应该能够: 安装最新的软件版本 安装最新的软件版本,而不是以前的版本 最后,;将最新软件版本与上一版本并排安装 更新 只是一个信息,我不知道的工具,我只是尝试安装项目,但我愿意学习另一个工具,如果必要的话,只要输出是一

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

正如我在一篇文章中读到的,我已经将当前安装程序的升级代码设置为与上一版本相同

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

其理念是,用户应该能够:

  • 安装最新的软件版本
  • 安装最新的软件版本,而不是以前的版本
  • 最后,;将最新软件版本与上一版本并排安装
更新

只是一个信息,我不知道的工具,我只是尝试安装项目,但我愿意学习另一个工具,如果必要的话,只要输出是一个微星

更新#2

我可以在高级安装程序中完成,但这是一个付费功能,所以。。。我在想,也许我也可以在安装程序项目或其他什么的。有人吗?

范例炎:此要求与MSI范例不兼容。为了支持不同版本的并行部署,安装程序本身和应用程序都必须调整为和平共存,这样它们就不会意外地覆盖相同的数据文件和注册表项,也不会为文件关联而争吵,等等

拥有美好?:这是绝对要求还是“拥有美好”的问题?如果我要实现这一点,我将基本上使每个安装版本独立于旧版本,并可能使用自定义操作触发卸载旧版本,或向升级表中添加临时行。不平凡。不是火箭科学。我从来没有试过。所以你看到了提出建议的两难境地

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



过去的爆炸:还有其他一些可能性。您可以使用多实例转换,您可以使用虚拟化。我以前在这里写过:。请略读一下。

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

  • 具有相同的升级代码,并将VS RemovePreviousVersions设置为true以执行替换升级

  • 具有不同的升级代码,因此是一个新产品,将在前一个产品仍然存在时安装

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


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

    这是你想得到的解决方案吗,就像斯坦的建议?请您将最新信息分享给我们好吗?很抱歉,我的回复太晚了,我会重新评估情况,并在必要时更新我的问题。至于现在,我的问题是我需要做什么。看起来高级安装程序使用多实例转换功能来完成对多个安装实例的支持。这确实是先进的。我在下面的链接答案中提到了这个概念——你可以在WiX中实现,但它需要大量的工作和复杂的测试。我没有在Advanced Installer中测试过很多功能,但我确信它工作得很好,除非您使用的问题结构符合底层技术的限制和限制。我将测试不同的升级方案。感谢您的支持!我想我得挖得更深一些|非常感谢。考虑到你的回答,我将不得不重新评估形势。是的,这是客户的要求。看来WiX对我来说太过分了。是时候协商lol了。也许你的客户有App-V或类似的虚拟化技术?我不知道。对不起,我只是一个团队的成员,我想他们不会想挖那么深(((