使用WiX和MSI的多产品共享组件设置? [英] Multi-Product Shared Component Setup with WiX and MSI?
问题描述
我正在寻找有关如何构建 WiX 和
I'm looking for high level advise on how to structure a WiX and Burn MSI based installer solution for an application suite.
鉴于下面的布局,当所有应用程序/功能和共享库都进入同一安装目录时,安装程序套件应使用多少个不同的MSI软件包?
- 整个套件的单个MSI软件包显然太大(如当前系统所示)
- 每个应用程序一个(完整的)MSI软件包将复制这些应用程序之间共享的dll库,这意味着将复制100兆MB的DLL. (另外,对我来说,MSI重新计价的未知头痛)
- 每个二进制库和可执行文件一个MSI软件包?
- 即,许多MSI文件将只包含一个DLL或一个EXE
- 我可以确保仅在安装必备组件库软件包时才安装EXE MSI软件包吗?
- One single MSI package for the whole suite is clearly too large (as shown by the current system)
- One (complete) MSI package per application would duplicate the dll libraries shared between the apps, which would mean a duplication of 100s of MB worth of DLLs. (Plus, to me, unknown headaches with MSI refcounting)
- One MSI package per binary library and executable?
- I.e., many MSI files would only contain a single DLL or a single EXE
- Can I make sure the EXE MSI package is only installed when its prerequisite library packages are installed?
我们的应用程序套件的布局有点像MS Office,因为我们有一个一个安装文件夹,其中安装了一系列应用程序及其所有共享库文件.那就是:
Our application suite is layed out a bit like MS Office in that we have one installation folder where a series of applications is installed to together with all their shared library files. That is:
C:\ProgramFiles\MyApplicationSuite \ - App1.exe \ - App2.exe \ - App3.exe \ - ... \ - libxy.dll \ - qt.dll \ - ...
到目前为止,我们只有一个 InnoSetup 安装程序,可以安装所有应用程序作为功能,也就是说,"Windows程序"列表中只有一个程序"条目.之所以如此行之有效,是因为大多数时候无论如何整个套件都已安装,并且某些安装可能不会使用一个或两个应用程序.
Up until now, we had one single InnoSetup installer, that could install all of the apps as features, that is, there was only one single Programs entry in the Windows Programs list. This worked well because most of the time the whole suite was installed anyway, and some installations would maybe not use one or two apps.
由于单一设置方法开始崩溃,并且公司要求迫使我切换到基于MSI的安装,因此我正在研究如何使用WiX,Burn和粒度MSI包以最佳方式构造这样的野兽.
Since the single setup approach start to break, and Corporate Requirements force me to switch to an MSI based installation, I'm looking into how to structure such a beast the best way using WiX, Burn and granular MSI packages.
推荐答案
Some thoughts along the lines of what you already state on the topic of splitting or merging setups: Wix to Install multiple Applications. Have a skim of this and see if there are any variables that apply (release schedule, localization, build speed, etc...).
您可以使用合并模块或 WiX包含文件(基本上类似于C ++中包含一个普通的头文件,它是预处理器操作)在多个设置中包含共享组件.然后将对它们进行适当的引用计数,然后您可以以受控方式将更新分发给它们.
You can use merge modules or WiX include files (basically works like a normal header file include in C++, it is a preprocessor operation) to include shared components in several setups. They will then be properly reference counted and you can distribute updates to them in a controlled fashion.
我个人希望将共享组件从我的主要MSI中完全分离出来,并通过单独的先决条件安装程序进行安装,然后将其全部捆绑在由Burn或等效工具包制成的引导程序中,该工具包旨在允许安装多个MSI和/或EXE文件顺序.我发现这产生了良好的内聚性/耦合性.这值得商bat. MSI包含共享的嵌入式组件(合并模块/包含文件)时,它更独立",但是特别是对于公司部署,我喜欢将所有共享组件拆分为自己的必备MSI.出于某些非常技术上的原因,我需要花更多的时间来解释而不是可用的内容.
Personally I like to split shared components completely away from my main MSI and install them via a separate prerequisite setup and then bundle it all together in a bootstrapper made with Burn or equivalent toolkits designed to allow installation of several MSI and / or EXE files in sequence. I find this yields good cohesion / coupling. This is debatable. An MSI is more "self-contained" when it contains shared, embedded components (merge modules / include files), but particularly for corporate deployment I like to split all shared components to their own prerequisite MSI. There are some very technical reasons for this that I would need more time to explain than what is available.
我会暂时保留它,可能以后再返回并更新.
I will leave it at that for now, possibly returning and updating later.
某些链接 (主要是为了方便检索):
Some Links (primarily for easy retrieval):
- 如何使用WiX表示文件依赖项
- WiX(Windows Installer Xml),创建通用变量
- Wix安装程序:在命令行执行MSIEXEC管理员安装时设置组件条件属性
- 将模块文件合并到不同位置
- MSI参考计数:两种产品安装相同的MSI
- How to express a file dependency using WiX
- WiX (Windows Installer Xml), Create universal variables
- Wix Installer : Setting component condition property when doing a MSIEXEC admin install at command line
- Merge module files into different locations
- MSI Reference Counting: Two products install the same MSIs
这篇关于使用WiX和MSI的多产品共享组件设置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!