Windows installer 是否有构建后可扩展安装程序系统

Windows installer 是否有构建后可扩展安装程序系统,windows-installer,modularity,Windows Installer,Modularity,我们有一个产品,我们需要创建一个安装程序。 它有许多组件,可根据情况需要安装或不安装 当我们发布安装包时,我们希望能够安装包含任意数量的附加组件的安装包 例如,Foo Manager Pro包含: Foo管理控制台 Foo管理器数据库 食物经理服务 可能会以如下方式发送: FooManagerInstaller.exe FMPConsole.pkg FMPDatabase.pkg FMPServices.pkg 包可能由以下内容组成: 显示 要部署的文件 要执行的其他脚本 (例如查找文

我们有一个产品,我们需要创建一个安装程序。 它有许多组件,可根据情况需要安装或不安装

当我们发布安装包时,我们希望能够安装包含任意数量的附加组件的安装包

例如,Foo Manager Pro包含:

  • Foo管理控制台
  • Foo管理器数据库
  • 食物经理服务
可能会以如下方式发送:

  • FooManagerInstaller.exe
  • FMPConsole.pkg
  • FMPDatabase.pkg
  • FMPServices.pkg
包可能由以下内容组成:

  • 显示
  • 要部署的文件
  • 要执行的其他脚本
    (例如查找文件foo.config,执行一些XML操作)
如果客户机希望在安装过程中添加自定义皮肤和一系列插件,他们将创建自己的软件包:

  • FMPConsoleSkins.pkg
  • ClientWebservices.pkg
如果该客户随后将其发送给希望添加更多定制的其他人,他们也可以采用相同的方式

我们可以从头开始构建它,但我们想检查这种安装系统是否已经存在

我们已经有了一套NAnt脚本,它们做的事情离这不远。但它们很难维护,而且相当复杂。它们没有提供我们期望安装程序提供的任何“细节”(比如跟踪部署的文件,并在安装失败时删除它们)


我们一直在研究NSI和使用WiX构建MSI,但不清楚它们是否能够为下游提供提供额外软件包的能力,而无需发明我们自己的安装程序语言

此响应仅针对Windows Installer(因此也包括WiX);我从来没有机会使用NSIS

Windows Installer本身并不适合这种扩展性。如果您希望完全支持弹性(自修复、播发等),则下游添加的文件必须添加转换或补丁,并且必须在cab中可用或在源文件系统上未压缩。为了让最终用户能够无缝安装,引导程序需要识别这些扩展,并将它们作为安装的一部分应用。然而,如果您曾经希望修补核心安装,那么必须考虑下游修补程序的想法是一个非常复杂的想法


如果您不需要Windows Installer的弹性,那么当然可以将各种安装和卸载步骤作为自定义操作来实现。这些操作可以读取您的自定义pkg格式和清单,并相应地执行,至少在安装时是这样。弄清楚如何存储或重新创建卸载信息将是关键。假设您支持每台机器(而不是每用户),则这些操作需要延迟(在脚本中),因此如果您希望沿着这条路线前进,则与install-research CustomActionData可用的属性和目录的联系将非常少。(但请注意,我在搜索中看到的第一个热门话题是一个不太相关的“Visual Studio中的部署”主题。)

我知道许可证可能会花费一些钱,但“Installshield”(由于v.s.2010,我测试了限量版)有很多关于这些内容的功能,还有更新/降级功能,我不知道是否确实有你想要的,但是测试限量版(仍然是免费的)可能是个好主意,也许你可以在那里看到你需要的功能。

谢谢你的回答。我觉得这是个复杂的问题。我们确实需要支持对核心安装的更新,但这应该通过替换它们的.pkg来实现。