我正在为一堆相对复杂的桌面应用程序绘制一个应用程序部署过程。我们有 native 应用程序和 Java 应用程序,因此部署必须能够检查 JRE 是否存在并在需要时安装它。某些应用程序依赖于特殊硬件,因此部署还必须能够启动必要的驱动程序安装程序。一些应用程序是多平台的,最好相同的机制应该能够创建 Windows、Linux 和 Mac OS X 安装程序。即:
- 除了应用程序本身之外,安装程序还必须能够安装:
- Java 运行时环境。
- 驱动程序(硬件)- 即启动其他安装程序。
- 安装程序构建器必须可以从命令行操作,以便它可以与自动构建机制集成,该机制为每个平台在夜间构建时生成安装程序包。
- 此外,我需要为应用程序创建“从网络更新”机制。它可以包含在安装程序中,也可以是应用程序中内置的单独的自定义机制。
现在,这变得有点复杂,我怀疑可能没有一个安装程序可以完成这一切。因此,我正在考虑两种根本不同的方法:
- 特定于平台的机制:NSIS将为 Windows 创建
.exe
或.msi
,XXX 将为 Ubuntu 创建.deb
,YYY 将创建.dmg
适用于 OS X。 - 能够满足上述所有要求的跨平台安装程序:ZZZ?
有什么建议吗?我看过的一些选项包括:
有没有通用的工具,或者我应该为每个平台单独选择合适的工具?在后一种情况下,Ubuntu 和 Mac OS X 的“NSIS 等效项”是什么?
最佳答案
我有一些建议如下。
- 使用WIX (Windows Installer XML) 用于为 Windows 创建 MSI 安装程序
- 使用Package Maker (XCode 工具的一部分)在 MAC OS X 上,最好是命令行版本
编写包装脚本(使用 Python 等语言)来驱动整个安装程序创建过程。
- 聚合您需要安装的所有组件(可能来自您的版本控制系统)
- 尽可能为Wix和Package Maker生成必要的文件
- 运行打包工具并生成包
确保整个安装程序创建过程总体上是一个简单的命令操作(可以选择根据发布分支等标准创建不同版本的软件包)
总的来说,开发这个工作流程需要一些初步的努力和大量的思考。但最终的结果是值得付出努力的。
我还没有在 Linux 端这样做,但我想在此工作流程中会在这方面使用 RPM/DEB。
关于deployment - 为复杂的跨平台程序创建安装程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1782796/