Wix安装多个应用程序

Wix安装多个应用程序,wix,windows-installer,installation,Wix,Windows Installer,Installation,我可能有一个奇怪的要求 我开发了一个msi来安装两个软件。EULA后,必须出现一个带有两个复选框的屏幕,选择其中一个或两个复选框后,必须安装相应的软件 我以前只安装一个软件,从来没有两个 如果有任何线索,我将不胜感激。Windows installer有一个“功能”的概念,可以选择安装或省略。如果您已经创建了一个可用的安装程序,那么您的WIX文件中至少有一个元素 只需创建多个元素,然后使用或允许用户选择要安装的功能 内聚和耦合:将应用程序捆绑在一个MSI文件中,可能看起来像一个 好主意。从直觉上

我可能有一个奇怪的要求

我开发了一个msi来安装两个软件。EULA后,必须出现一个带有两个复选框的屏幕,选择其中一个或两个复选框后,必须安装相应的软件

我以前只安装一个软件,从来没有两个


如果有任何线索,我将不胜感激。

Windows installer有一个“功能”的概念,可以选择安装或省略。如果您已经创建了一个可用的安装程序,那么您的WIX文件中至少有一个
元素

只需创建多个
元素,然后使用
允许用户选择要安装的功能

内聚和耦合:将应用程序捆绑在一个MSI文件中,可能看起来像一个 好主意。从直觉上看,这似乎很好,也很简单。但是, 从现实世界的经验来看,我几乎总是以分手告终 应用程序通过自己的MSI文件安装,我不喜欢 多语言设置(真正的多语言设置很困难,因为在营销和销售部门推动快速发布母语版本(通常是英语版本)时,翻译内容通常还没有准备好)

将应用程序部署在一起真正安全的唯一时间是保证它们:

  • 始终由最终用户一起使用
  • 始终同时更新
  • 的规模不会随着时间的推移而大幅增长(
    本地化
    新的先决条件
    等…
  • 通常,这一切都是无法预测的。通常,您会很快得到新的需求

    核心挑战
    什么可能会在其自身的发布周期中出现?
    (立即拆分)。事情往往会突然发生!以下是一些常见的挑战:

    缺陷修复:如果只有一个应用程序有缺陷,管理层将只希望交付一个新的MSI,而保持应用程序2不变,并且在安装后无需对两个应用程序执行全新的QA运行。这是为了降低风险,并提供更小的更新,从而更快地进行测试和验证。修补非常复杂,对于MSI文件来说通常更安全,因为MSI文件尽可能简单,没有太多语言、自定义操作或GUI构造

    本地化:突然,您需要将应用程序1翻译成意大利语,而应用程序2则不需要翻译。语言支持往往会大大增加设置的复杂性,更不用说它的大小了。你的“漂亮而简单”的微星现在突然变得维护复杂,构建缓慢。如果你需要一个单独的设置,并且你用多种语言翻译它,这也是一件非常痛苦的事情——在所有语言更新都完成之前,你将无法编译RTM版本。我现在可以告诉你,在所有本地化版本准备就绪之前,营销/销售人员不会保留英文版本

    QA/UAT:如果应用程序很大,交付2个单独的MSI文件将更容易在不同的QA团队之间分配测试工作,并通过夜间构建等方式交付新的更新

    发布时间表:应用程序的发布时间表突然发生变化-应用程序1现在每月更新一次,而应用程序2仅每六个月更新一次。如果不同的用户使用这些应用程序,您如何提供更新?在一个MSI中构建它,并给它一个新的版本号,只让应用程序2的用户重新安装相同的应用程序

    内聚性耦合性的总体开发人员原则应用于部署包,您将省去很多麻烦。如果应用程序现在或将来可能有自己的生命周期,请立即拆分它们的部署。谁能预见未来

    请注意,您通常会将多个MSI文件包装在一个引导程序中,这样即使产品是通过单独的MSI文件安装的,用户仍然只有一个文件可以关联

    Wix更新:随着Wix的出现,创建复杂的设置,构建Wix包含文件变得更加容易,这些文件可以编译成多个MSI文件。这实际上成为一种更灵活的合并模块类型。这可能会在将来简化MSI文件的拆分或合并

    绝对设置大小:对于单个MSI中可以包含多少组件和文件,存在一些限制。一些细节:

    • 更新:WiX允许预处理器构造刻录捆绑包,可用于拆分大型设置
    • 此处的详细说明:(标记朝向底部)
    • 关于WiX中不同的“变量类型”:(有很多:
      预编译器
      本地化
      刻录
      等。
    出于这个原因和上面列出的其他原因,将一个巨大的MSI“分解”为几个相关的MSI是很有帮助的,以便使维护更容易(构建和编译速度,仅重建多个MSI文件中的一个,等等)。最后,您应该坚持每个组件使用一个文件,以使升级和修补正常工作。几个MSI文件可以使用引导程序或启动器应用程序(如WiX Burn)或商业工具(如Installshield和Advanced Installer)中的功能按顺序安装。然后就开始了