0

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

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

例如,Foo Manager Pro 包含:

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

这可能会像这样运送:

  • FooManagerInstaller.exe
  • FMPConsole.pkg
  • FMP数据库.pkg
  • FMPServices.pkg

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

  • 显现
  • 要部署的文件
  • 要执行的附加脚本
    (例如查找文件 foo.config,进行一些 XML 操作)

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

  • FMPConsoleSkins.pkg
  • ClientWebservices.pkg

如果该客户随后将其发送给想要添加更多定制的其他人 - 他们可以以相同的方式这样做。

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

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

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

4

2 回答 2

1

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

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

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

于 2010-06-01T12:44:46.693 回答
0

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

于 2010-06-01T13:03:28.347 回答