代码之家  ›  专栏  ›  技术社区  ›  Wreigh

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

  •  1
  • Wreigh  · 技术社区  · 7 年前

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

    我试过设置 RemovePreviousVersions True 但是它会自动卸载以前的版本;有什么方法可以让用户做出决定吗?

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

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

    更新

    只是一个信息,我对工具不了解,我只是在尝试 安装程序项目 ,但如果需要,我愿意学习另一个工具,只要输出是MSI。

    更新#2

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   Stein Åsmul    7 年前

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

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

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


    :还有其他一些可能性。你可以用 multi-instance transforms ,你可以使用 virtualization . 我以前在这里写过: Installing Multiple Instances by different msi having same Package Code . 请略读一下。

        2
  •  1
  •   PhilDW    7 年前

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

    1. 它具有相同的升级代码,并将VS removePrevious版本设置为true以执行替换升级。

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

    然后你需要一个启动程序来询问用户需要什么,升级或者并排运行,然后启动所需的程序。