如何在非 Mac 平台上为我的应用程序构建本机 Mac OS X 安装程序?

例如,我有一台 Windows 电脑和一个 Java 应用程序。我希望 Windows 电脑构建一个与 Apple 安装程序配合使用的安装程序(可能在 .dmg 存档内)。

有帮助吗?

解决方案

现在可以在非Mac平台上创建本机Mac OS X安装程序。作为Louis Gerbarg,棘手的一点是BOM(物料清单)文件。然而,mkbom的开源版本(基于Joseph Coffland的osxbom代码)现在可以在:

http://hogliux.github.io/bomutils

该网站还有一个关于在Linux上创建Mac OS X安装程序的简单分步教程( http://hogliux.github.io/bomutils/tutorial.html

我的公司使用这种方法定期在Linux上构建Mac OS X安装程序,到目前为止我们没有遇到任何重大问题。

其他提示

正如其他人已经指出的那样,您确实正在采取艰难的解决方案来解决这个问题,并且您的用户会为此咒骂您的名字,除非您有一个 真的 这样做的充分理由。确实,某些类型的应用程序需要 Mac OSX 的安装程序。这些一般包括:

  • 安装自定义驱动程序(即内核扩展)的应用程序
  • 需要安装框架或其他资源的应用程序由于某种原因无法打包在应用程序包中
  • 需要作为系统服务运行的应用程序,因此必须运行一些安装后脚本才能在启动期间启动应用程序
  • 编写糟糕的程序需要对用户的系统进行某种类型的更改(即设置文件夹或其他内容的权限),并且开发人员的双手被营销部门束缚,以最痛苦的方式分发应用程序

好吧,最后一点有点讽刺,但是你明白我的意思了吗?:) 基本上,如果您正在编写一个普通的最终用户应用程序,您应该以 Mac 用户期望的正常方式分发它,这是一个包含应用程序包的 DMG 文件。或者,如果您想要真正的花哨,可以在 DMG 内的“应用程序”文件夹中添加一个别名,以帮助用户将程序拖到那里。除非你正在写一些必须自行安装的东西 进入 系统,而不是简单地 被运行 系统,没有理由在这里使用安装程序。另外,请记住,这是 OSX,它已经包含功能齐全的 Java JRE,因此您无需担心将 JRE 打包到安装程序或类似的东西中。

既然您因提出这个问题而受到了适当的责骂,那么我将假设您的软件属于上述类别之一来回答它。实际上,您最好的选择是使用商业解决方案,例如 VISE 安装程序(我可以再次自信地说,绝大多数 Mac 用户在安装使用此工具制作的产品时会感到恐惧),它允许您完全按照您在这里寻找的内容进行操作 - 基本上,制作一个跨平台安装程序,该安装程序可以通过单个安装程序文件为您想要支持的各种平台构建。

不过,再次强调,您最好的选择是做该平台用户最喜欢的事情(这就是为什么对您的问题的所有答复都敦促您不要制作安装程序)。但是,这意味着,如果您确实必须制作安装程序,则应该使用 -跨平台框架;Windows 用户在使用标准 MSI 安装程序时会感到最自如,而 Mac 用户在使用 Apple Installer pkg 时会感到最自在。不过,PackageMaker 程序的局限性是出了名的,所以如果必须的话,您应该使用 冰山 反而。这对您来说意味着更多的维护工作,因为您需要维护两个(或更多)单独的安装程序,但如果您的软件确实如此复杂以至于需要这样做,您应该愿意为舒适性做出牺牲您的用户。

很难在Windows上创建.dmg,但肯定可以创建一个.app文件结构,然后你可以压缩,正如其他评论所提到的那样。有时候常规.pkg不会剪切它,你想提供对话框,安装前检查等。你可以用 BitRock installbuilder ,您可以从其他每个平台构建适用于mac,Linux,Windows,Solaris的安装程序。

所以,有几个简单的问题。

首先,您为什么需要安装程序?大多数Mac用户更喜欢只是拖动安装的应用程序。如果您没有编写Mac OS X特定代码,很难想象您需要在特殊位置放置位,例如Application Support或LaunchDaemons。假设您拥有的所有内容都放在一个文件夹中,为什么还要使用安装程序呢?

其次,为什么在Mac上构建Mac安装程序会出现问题?当然你周围有一个macintosh来测试应用程序(你不是盲目地将它运送到Mac而不在Mac上测试它,对吗?)。

好的,说到这一点,假设你仍然有充分的理由在PC上实际构建它,那么有些东西并不容易。基本上.pkg是一堆文本脚本,本地化,存档文件(Archive.pax.gz)和物料清单(Archive.bom)。

假设构建之间没有太大的变化,您可以在Mac上制作安装程序,然后只需重建bom和pax.gz,将它们替换为现有的.pkg,并批量处理几个元数据。 pax应该很容易处理(pax是标准的归档格式),但是bom文件可能有点棘手,因为我不相信它是公开记录的,我怀疑创建它们的工具(mkbom)是达尔文的一部分(不是开源)。所以你需要弄清楚并编写一个自定义工具来创建bom文件。

换句话说,这可能是一项大量的工作。

在Mac上安装应用程序的常用方法是将应用程序拖到应用程序文件夹中。大多数程序都是包含应用程序的DMG和指向应用程序文件夹的符号链接。你为什么要用其他方式呢?您需要认为Mac可以构建出色的Mac应用程序!外观非常重要,特别是对Mac用户而言。

查看此代码以阅读BOM文件: https://cauldrondevelopment.com/svn/osxbom/trunk

将所有内容放入一个JAR文件中,将其添加到ZIP中。完成。

但严重的是,您是否希望将应用程序分发给Macintosh用户而不先测试它?你在哪个星球上??

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top