6

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

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

4

7 回答 7

4

现在可以在非 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 安装程序,到目前为止我们还没有遇到任何重大问题。

于 2013-07-28T22:51:33.667 回答
2

正如其他人已经指出的那样,您确实在为这个问题采取硬性解决方案,您的用户会因此而诅咒您的名字,除非您有充分的理由这样做确实,某些类型的应用程序需要 Mac OSX 的安装程序。这些通常包括:

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

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

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

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

于 2008-11-12T14:49:31.003 回答
2

在 Windows 上创建 .dmg 很困难,但正如其他评论所提到的,创建一个可以压缩的 .app 文件结构当然是可能的。有时,常规的 .pkg 不会剪切它,而您想要提供对话框、安装前检查等。您可以使用BitRock installbuilder来做到这一点,您可以从每个其他平台。

于 2009-01-18T11:20:08.550 回答
1

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

首先,为什么要安装程序?大多数 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 文件。

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

于 2008-11-12T14:21:58.000 回答
0

在 Mac 上安装应用程序的常用方法是将应用程序拖到应用程序文件夹中。大多数程序都以 DMG 形式提供,其中包含应用程序和指向应用程序文件夹的符号链接。你为什么要以其他方式?您需要考虑 Mac 才能构建出色的 Mac 应用程序!外观和感觉非常重要,尤其是对于 Mac 用户。

于 2008-11-12T14:35:46.193 回答
0

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

于 2011-11-05T10:52:06.750 回答
-1

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

但说真的,您想在不先测试的情况下将您的应用程序分发给 Macintosh 用户吗?你在哪个星球!?

于 2008-11-13T02:20:19.063 回答