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

标签 deployment installation cross-platform

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

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

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

  1. 特定于平台的机制:NSIS将为 Windows 创建 .exe.msi,XXX 将为 Ubuntu 创建 .deb,YYY 将创建 .dmg 适用于 OS X。
  2. 能够满足上述所有要求的跨平台安装程序:ZZZ?

有什么建议吗?我看过的一些选项包括:

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

有没有通用的工具,或者我应该为每个平台单独选择合适的工具?在后一种情况下,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/

相关文章:

javascript - 我想从后端渲染动态内容,该内容在 React Native 中具有 html 标签

deployment - kubernetes 部署 - 容器未启动 - 错误 - InvalidImageName

ruby-on-rails - 已部署的 Rails 应用程序出现 Postgresql 错误

ruby-on-rails - 无法安装 pg gem

delphi - Delphi win32 应用程序的自安装程序

cmake - 如何以跨平台的方式使用 CMake ExternalProject_Add 或替代品?

css - Django 压缩器和部署

Kubernetes - 部署/副本集

python - 安装pygame时出错

javascript - 我可以而且应该在浏览器中实现 "desktop"应用程序吗?