WiX项目允许并排安装

时间:2011-05-03 08:27:24

标签: wix windows-installer side-by-side

我正在为我们的产品创建 MSI 。我希望该产品能够安装并排。这样我就可以先安装1.0.0,然后再安装1.0.1,这样就可以安装两个版本了。

我正在使用WiX创建msi,并想知道如何在Wix中完成这项工作?例如

  • 我是否需要为所有组件创建新Guids
  • 我如何将版本信息添加到wix ,还是应该完全重命名我的产品?
  • 如何创建项目以便发布新版本需要 wix 项目中的最小变化?

问候, 马亭

2 个答案:

答案 0 :(得分:10)

您应该能够通过更改顶级产品代码和UpgradeCode GUID来使您的两个产品完全不相关,并使用Productversion来识别版本。您可以在产品之间共享组件guid(这就是合并模块的工作方式),这样安装程序的内核(组件定义)就不需要调整,仍然可以共享。

您面临的主要挑战将是确保两个分离的产品不会相互干扰,例如具有相同的默认安装文件夹,开始菜单条目和相同的添加/删除程序条目。您可以通过在ProductName属性中包含产品版本号来实现此目的,这在您的安装UI中看起来有点技术性,但这并非闻所未闻。

答案 1 :(得分:0)

关于你的第一个问题:不,你不需要。
但为什么呢?

在我的并排场景中,我很难理解Windows安装程序规则。 您真的需要了解component rules (including when you need to brake them)key paths的概念。 WiX并没有抽象出这些方面。

This answer已经突出了可能的干扰。 我们来看几个例子。

  • 不需要更改具有应用程序可执行文件的组件的GUID。这打破了组件规则,但它起作用,因为产品的两个版本都以非干扰的方式定义了相同的组件。
  • 不直接支持两个版本共享的资源。一个突出的例子是使用ProgIDs使用文件扩展名,如here所示。

    如果更改GUID(使用“*”GUID时也会发生),卸载任一版本时都会删除扩展程序。

    如果您不更改GUID,将保留扩展名,但指向最近安装的版本。您可以选择此选项作为两个恶魔中的较小者,至少支持用户按照安装版本的相同顺序卸载版本的情况。
    这里有一个陷阱:扩展需要成为组件的关键路径。这使得ProgID元素的使用在并排场景中会出现问题,因为如果没有将ProgID元素放在与引用文件相同的组件中,您将收到ICE69警告。此外,它是WiX的实现细节,它生成的注册表项将成为关键路径。