为复杂的跨平台程序创建安装程序

时间:2009-11-23 12:14:38

标签: deployment installer installation cross-platform

我正在为一堆相对复杂的桌面应用程序草拟应用程序部署过程。我们有本机和Java应用程序,因此部署必须能够检查是否存在JRE并在需要时安装它。某些应用程序依赖于特殊硬件,因此部署还必须能够启动必要的驱动程序安装程序。一些应用程序是多平台的,最好相同的机制应该能够创建Windows,Linux和Mac OS X安装程序。那就是:

  • 除应用程序本身外,安装程序必须才能安装:
    • Java Runtime Environment。
    • 驱动程序(硬件) - 即启动其他安装程序。
  • 安装程序构建器必须可以从命令行运行,以便它可以与自动构建机制集成,该机制为每个平台生成每晚构建的安装程序包。
  • 此外,我需要为应用程序创建“从Web更新”机制。它可以包含在安装程序中,也可以是应用程序内置的单独自定义机制。

现在,这有点复杂,我怀疑可能没有一个安装程序可以完成这一切。因此,我正在考虑两种根本不同的方法:

  1. 特定于平台的机制:NSIS会为Windows创建.exe.msi,XXX会为Ubuntu创建.deb,而YYY会为.dmg创建{{1}} OS X。
  2. 可满足上述所有要求的跨平台安装程序:ZZZ?
  3. 有什么建议吗?我看过的一些选项包括:

    • NSIS - 很棒,但仅限Windows。
    • IzPack - 很好,但需要JVM才能运行。

    是否有通用工具,或者我应该为每个平台单独选择合适的工具?在后一种情况下,Ubuntu和Mac OS X的“NSIS等价物”是什么?

3 个答案:

答案 0 :(得分:2)

BitRock InstallBuilder符合所有要求,包括多平台并提供自动更新机制

答案 1 :(得分:1)

我有一些建议如下。

  • 使用WIX (Windows Installer XML) 创建Windows的MSI安装程序
  • 在MAC OS X上使用Package Maker(部分XCode工具),最好是命令行版本
  • 编写包装器脚本(在Python中),以驱动整个安装程序的创建过程。

    • 汇总您需要安装的所有组件(可能来自您的版本控制系统)
    • 尽可能为Wix和Package Maker生成必要的文件
    • 运行打包工具并生成包
  • 确保整体安装程序创建过程总体上是一个简单的命令操作(根据发布分支等标准创建包的不同版本的选项)

总的来说,开发这个工作流程需要一些初步的努力和相当多的思考。但最终的结果是非常值得的。

我没有在Linux方面做过这个,但我想在这个工作流程中会在这方面使用RPM / DEB。

答案 2 :(得分:1)

你应该看看InstallJammer。它肯定会处理您想要的跨平台元素,甚至可以在安装期间向目标系统上的DEB和RPM数据库添加条目。 OS X支持仍然是实验性的,但它主要起作用。