WiX项目允许基于版本的升级和并行(多实例支持)安装

WiX项目允许基于版本的升级和并行(多实例支持)安装,wix,windows-installer,wix3.5,Wix,Windows Installer,Wix3.5,我非常喜欢持续集成、部署和交付。我相信基于修订版的升级是一种方式,但使用基于WIX的安装程序似乎很难支持此功能。我目前正在尝试更改我们产品的安装程序,以便它可以并行安装(多实例支持),并允许基于修订的升级。在我的例子中,我希望允许并行安装产品的1.0.0.0和1.0.0.1版本,并支持升级任何安装,就像只允许在不更改产品1.0.0.0版本的情况下从1.0.0.1升级到1.0.0.2一样 所以在给定的场景中 在1.0.0.0之上安装1.0.0.1时,需要升级1.0.0.0 将1.0.0.1作为新实

我非常喜欢持续集成、部署和交付。我相信基于修订版的升级是一种方式,但使用基于WIX的安装程序似乎很难支持此功能。我目前正在尝试更改我们产品的安装程序,以便它可以并行安装(多实例支持),并允许基于修订的升级。在我的例子中,我希望允许并行安装产品的1.0.0.0和1.0.0.1版本,并支持升级任何安装,就像只允许在不更改产品1.0.0.0版本的情况下从1.0.0.1升级到1.0.0.2一样

所以在给定的场景中

  • 在1.0.0.0之上安装1.0.0.1时,需要升级1.0.0.0
  • 将1.0.0.1作为新实例安装时,1.0.0.0和1.0.0.1需要同时存在于同一个框中(安装将使用不同的位置)。它应该像新的一样安装,并在添加/删除程序中显示两次
  • 在未来,1.0.0.2应该能够升级任何一个现有实例(1.0.0.0或1.0.0.1),而无需更改其他实例
  • 在1.0.0.1上安装1.0.0.1应执行常规维修
  • 安装程序应防止降级
  • 我尝试了Wix MajorUpgrade元素,但它没有按照我想要的方式工作。这是我实验的全部结果

    1。安装1.0.0.0,然后升级到1.0.0.1。它运行良好(如预期)

    2。安装1.0.0.1作为新实例,然后1.0.0.0和1.0.0.1在同一个框中共存(工作)。

    3。安装1.0.0.2作为升级到1.0.0.0(不是1.0.0.1)。这是一个问题。它卸载了所有内容(1.0.0.0和1.0.0.1),但没有正确安装1.0.0.2。

    最后一个结果真的很奇怪,我不知道如何让安装只升级目标版本,而不卸载所有实例?任何帮助或指导都将不胜感激

    <Product Id="*"
               Name="$(var.ProductName)"
                 Language="1033"
                 Version="$(var.Version)"
                 Manufacturer="$(var.Manufacturer)"
               UpgradeCode="MY-UPGRADE-CODE">
    
    
    <MajorUpgrade Schedule="afterInstallInitialize" DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." />
    

    您需要停止使用MajorUpgrade元素并生成特定于版本的升级。MajorUpgrade基本上是一个简短而甜蜜的方式来升级之前的每个版本。相反,您需要构建针对要升级的特定版本范围的特定WiX升级元素。您的1.0.0.2将有一个升级元素,该元素只针对版本1.0.0.0进行升级

    如果没有更多关于未正确安装的详细信息,就无法详细说明升级失败的原因。我注意到您在InstallInitialize之后安排了升级,这意味着如果要将相同的资源安装到相同的位置,则需要增加文件版本以替换文件并遵循组件规则。也许这就是问题所在