使用WiX和MSI进行多产品共享组件设置?

问题描述 投票:2回答:1

沥青

我正在寻找关于如何为应用程序套件构建基于WiXBurn MSI的安装程序解决方案的高级建议。

给定下面的布局,当所有应用程序/功能和共享库进入同一个安装目录时,安装程​​序套件应该使用多少个不同的MSI包?

  • 整个套件的单个MSI包显然太大(如当前系统所示)
  • 每个应用程序一个(完整的)MSI包将复制应用程序之间共享的dll库,这意味着复制了100个MB的DLL。 (另外,对我而言,MSI引用计算未知的头痛)
  • 每个二进制库和可执行文件有一个MSI包吗? 即,许多MSI文件只包含一个DLL或一个EXE 我是否可以确保仅在安装了必备库软件包时才安装EXE MSI软件包?

背景

我们的应用程序套件有点像MS Office,因为我们有一个安装文件夹,其中安装了一系列应用程序及其所有共享库文件。那是:

 C:\ProgramFiles\MyApplicationSuite
                                   \ - App1.exe
                                   \ - App2.exe
                                   \ - App3.exe
                                   \ - ...
                                   \ - libxy.dll
                                   \ - qt.dll
                                   \ - ...

到目前为止,我们只有一个InnoSetup安装程序,可以安装所有应用程序作为功能,也就是说,Windows程序列表中只有一个程序条目。这很好用,因为大多数时候整个套件都安装了,有些安装可能不会使用一个或两个应用程序。

由于单一设置方法开始中断,而企业要求迫使我切换到基于MSI的安装,我正在研究如何使用WiX,Burn和粒度MSI软件包构建这样的野兽。

installation wix windows-installer burn
1个回答
1
投票

关于拆分或合并设置主题的一些想法:Wix to Install multiple Applications。撇开这个并查看是否有适用的变量(发布计划,本地化,构建速度等)。

你可以使用merge modulesWiX include files(基本上像普通的头文件包含在C ++中,它是一个preprocessor operation)在几个设置中包含共享组件。然后,它们将被正确引用计数,您可以以受控方式分发更新。

就个人而言,我喜欢将共享组件完全从主MSI中拆分出来,然后通过单独的先决条件设置将它们安装在一起,然后将它们全部捆绑在一个由Burn制作的引导程序或等效工具包中,以便按顺序安装多个MSI和/或EXE文件。我发现这会产生良好的内聚/耦合。这是值得商榷的。当MSI包含共享的嵌入式组件(合并模块/包含文件)时,它更“自包含”,但特别是对于企业部署,我喜欢将所有共享组件拆分为它们自己的先决条件MSI。这有一些非常技术性的原因,我需要更多的时间来解释而不是可用的。

我现在就把它留在那里,可能会在以后返回并更新。


一些链接(主要是为了方便检索):

© www.soinside.com 2019 - 2024. All rights reserved.