1

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

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

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

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

4

2 回答 2

0

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

在 MSI 之间共享组件很容易。共享组件必须具有相同的 GUID 和组件键路径。查看详情

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

于 2014-01-24T11:00:08.813 回答
0

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

需要了解的几个关键事项:

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

  2. MSI 可能有也可能有自己的 UI。在任何情况下,您都可以在 MsiPackage 元素中抑制它。如果您真的非常需要在安装过程中询问用户某些问题,您可以在自定义引导程序应用程序中询问,并可能将其作为 MsiProperty 传递给 MSI。

因此,我建议为每个应用程序和每组共享组件使用一个 MSI。并且,一个或多个引导程序用于一个或应用程序 MSI 和他们需要的共享 MSI。如果您创建自定义引导程序应用程序UI(C++ 或 .NET),就像 Visual Studio 和 WiX 本身所做的那样,您的用户可以使用一个引导程序有选择地安装/卸载您的各种应用程序。

于 2014-01-26T16:29:27.670 回答