【问题标题】:Is there a Post-Build Extensible Installer System是否有构建后可扩展安装程序系统
【发布时间】:2010-05-28 07:21:30
【问题描述】:

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

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

例如,Foo Manager Pro 包含:

  • Foo 管理器控制台
  • Foo 管理器数据库
  • Foo 经理服务

这可能会像这样运送:

  • FooManagerInstaller.exe
  • FMPConsole.pkg
  • FMPDatabase.pkg
  • FMPServices.pkg

一个包可能包含以下内容:

  • 清单
  • 要部署的文件
  • 要执行的其他脚本
    (例如找到文件 foo.config,做一些 XML 操作)

如果客户想要添加自定义皮肤和一系列插件作为安装的一部分,他们会创建自己的包:

  • FMPConsoleSkins.pkg
  • ClientWebservices.pkg

如果该客户随后将其发送给想要添加更多自定义的其他人 - 他们可以以相同的方式执行此操作。

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

我们已经有一组 NAnt 脚本,它们的功能与此相差不远。但是它们很难维护,而且相当复杂。它们没有提供我们期望安装程序提供的任何“好处”(例如跟踪部署的文件并在安装失败时删除它们)。

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

【问题讨论】:

    标签: windows-installer modularity


    【解决方案1】:

    此响应仅针对 Windows Installer(以及 WiX);我从来没有机会使用 NSIS。

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

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

    【讨论】:

    • 感谢您的回答。认为这是一个复杂的问题。我们确实需要支持对核心安装的更新,但这应该通过替换它们的 .pkg 来实现。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 2023-03-07
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多