【问题标题】:User-based removal of previous version in Installer Project在安装程序项目中基于用户删除以前的版本
【发布时间】:2018-08-24 06:21:14
【问题描述】:

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

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

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

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

  • 安装最新的软件版本
  • 在之前的版本上安装最新的软件版本
  • 最后;将最新的软件版本与之前的软件并排安装。

更新

只是一个信息,我不了解这些工具,我只是在尝试 Installer Project,但如果有必要,我愿意学习另一个工具,只要输出是MSI。

更新#2

我可以在 Advanced Installer 中执行此操作,但它是一项付费功能,所以...我在想也许我也可以在 Installer Project 或其他东西中执行此操作。有人吗?

【问题讨论】:

  • 是否像 Stein 的建议一样,是您想要得到的解决方案?能否请您分享一下您身边的最新消息?
  • 抱歉回复晚了,我会重新评估情况并在必要时更新我的​​问题。就目前而言,我的问题是我需要发生的事情。
  • 看起来高级安装程序使用多实例转换功能来完成对多个安装实例的支持。这确实是先进的。我在下面的链接答案中提到了这个概念——你可以在 WiX 中做到这一点,但它需要做很多工作并且测试起来很复杂。我没有在 Advanced Installer 中对功能进行太多测试,但我确信它运行良好,除非您使用有问题的构造,这些构造会遇到底层技术的限制和限制。我会测试不同的升级方案。
  • 感谢您的支持!我想我必须深入挖掘。 :|

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


【解决方案1】:

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

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

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


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

【讨论】:

  • 谢谢。考虑到您的回答,我将不得不重新评估情况。是的,这是客户的要求。
  • 看来 WiX 对我来说太过分了。是时候谈判了哈哈。
  • 也许您的客户有可用的 App-V 或类似的虚拟化技术?
  • 我不知道。对不起,我只是一个团队的一员,我认为他们不会想挖得那么深。 :(((
【解决方案2】:

在我看来,您可以这样做的唯一方法是拥有两个 MSI 文件。它们都有新的 ProductCode,它们是:

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

  2. 具有不同的 UpgradeCode,因此是一种新产品,将在前一个产品仍然存在时安装。

然后您需要一个启动程序,它会询问用户哪些是必需的、升级还是并行,然后它会启动所需的程序。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多