Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix burn升级需要卸载MSI和#x27;在升级之前_Wix_Bootstrapper_Burn - Fatal编程技术网

Wix burn升级需要卸载MSI和#x27;在升级之前

Wix burn升级需要卸载MSI和#x27;在升级之前,wix,bootstrapper,burn,Wix,Bootstrapper,Burn,我有两个微星framework.msi和product.msi。framework.msi将dll安装到GAC中,product.msi在安装和卸载时都依赖该dll 我创建了一个BA,将两个MSI链接在一起 <Bundle ...> <Chain> <PackageGroupRef Id='framework'/> <PackageGroupRef Id='product'/> </Chain> </Bun

我有两个微星
framework.msi
product.msi
framework.msi
将dll安装到GAC中,
product.msi
在安装和卸载时都依赖该dll

我创建了一个BA,将两个MSI链接在一起

<Bundle ...>
  <Chain>
    <PackageGroupRef Id='framework'/>
    <PackageGroupRef Id='product'/>
  </Chain>
</Bundle>
<Fragment>
  <PackageGroup Id="framework">
    <MsiPackage Name="Product Framework"
                ForcePerMachine="yes"
                SourceFile="framework.msi"
                Vital="yes"
                Cache="no"
                Permanent="no"
                Compressed="yes"
                Visible="yes"/>
  </PackageGroup>
  <PackageGroup Id="product">
    <MsiPackage Name="Product"
                ForcePerMachine="yes"
                SourceFile="product.msi"
                Vital="yes"
                Cache="no"
                Permanent="no"
                Compressed="yes"
                Visible="yes"/>
  </PackageGroup>
</Fragment>
我意识到,如果我们将两个MSI组合成一个大产品,这是可能的,但由于我们将
framework.MSI
分散到其他团队,并且由于各种其他原因,它们需要分开


我想用WiX引导程序做的事情可能吗

这在今天的烧伤中是不可能的。链条是固定的。安装时向前运行,卸载时向后运行。我今天可以想到两个选择:

  • 不要让MSI彼此升级,并在新捆绑包卸载旧捆绑包时删除旧MSI

  • 避免在包之间创建安装时依赖关系。无论如何,这通常是一件好事

  • 功能要求可能是让新的捆绑包能够在安装之前而不是像现在这样在安装之后删除旧的捆绑包,但目前不支持这一点

    // pseudo code
    if(product.Exists() && framework.Exists())
    {
      product.Uninstall(); // product is dependent on the framework
      framework.Uninstall();
    }
    framework.Install();
    product.Install();