WiX Bootstrapper项目结构

时间:2014-01-24 08:51:20

标签: wix bootstrapper wix3.8

我们有类似于Microsoft Office的产品。有很多共享库的几个不同的应用程序。我们正在尝试重构此产品的部署过程,因为目前我们正在使用多个单独的MSI软件包来独立安装每个应用程序。虽然这很有效,但我们希望使用WiX引导程序捆绑这些MSI文件并只创建一个安装应用程序。目前,所有共享库都包含在每个MSI包中,这需要占用大量空间。

我们基本上有两种选择来实现这一目标:

  • 创建一个WiX设置(MSI)项目;包括所有产品 特征。在这种情况下,处理共享库非常好 直截了当。但是项目的结构变得太大了 在我看来。
  • 创建多个MSI包。每个只有一个 产品并将它们捆绑到引导程序中。在我看来,这个 方法在文件方面更灵活,更清晰 和组件。但是共享库如何在这里工作?他们 不应包含在每个MSI文件中。

在WiX引导程序项目中首选哪种方法?

2 个答案:

答案 0 :(得分:0)

具有许多功能的一个大型MSI难以支持。

在MSI之间共享组件很容易。共享组件必须具有相同的GUID和组件密钥路径。请参阅details

要轻松实现此目标,请为所有共享组件(其自己的片段中的每个组件或组件组)创建一个WiX库项目。然后将库包含到所有WiX Package项目中,并在WiX Package项目中引用其组件(或组件组)。

答案 1 :(得分:0)

您可以将共享组件分组到多个MSI中,然后为您的应用程序创建一个或多个引导程序。

要了解的几个关键事项:

  1. 可以配置MsiPackages,以便当引导程序安装MSI时,它会在“程序和功能”(ARP)列表中显示或不显示MsiPackage。

  2. MSI可能有也可能有自己的用户界面。在任何情况下,您都可以在MsiPackage元素中禁止它。如果您确实需要在安装过程中询问用户某些内容,可以在客户引导程序中询问并将其作为MsiProperty传递给MSI。

  3. 因此,我建议为每个应用程序和每组共享组件提供MSI。并且,一个或多个引导程序用于一个或应用程序MSI以及它们所需的共享MSI。如果您创建custom bootstrapper application UI(C ++或.NET),如Visual Studio和WiX本身,您的用户可以使用一个引导程序选择性地安装/卸载您的各种应用程序。