10

我们需要即时构建 Mac 包,如果有一种方法可以在 Windows 或 Linux 平台上创建相同的包,而不是在 Mac 上使用 PackageMaker,那将会很方便。有任何想法吗?

4

2 回答 2

20

我不同意这是不可能的。您当然可以在另一个操作系统上完成 PackageMaker 在 OSX 上所做的所有事情。只需创建这些文件:

Contents/
  Archive.bom
  Archive.pax.gz
  Info.plist
  PkgInfo
  Resources/
    TokenDefinitions.plist
    package_version
    en.lproj/
      Description.plist

.plist 文件可以很容易地在 Python 中使用plistlib创建,它现在是 Python 中的标准。.bom 和 .pax.gz 有点棘手,但其余都是文本文件。

.pax.gz 文件的 .gz 部分表示它是用 gzip 压缩的。这在 Windows 和 Linux 上可用。

根据pax 手册页,pax 文件实际上可以采用多种不同的存档格式,包括cpiotar,在 Linux 或 Windows 中也很容易做到。PackageMaker 似乎创建了压缩的cpio文件,至少在 10.6 上。

.bom 文件是包中所有文件及其大小的列表。它可能是在 OSX 之外创建的最难的部分。BOM 代表物料清单,来自 NextSTEP 操作系统。我无法找到有关 BOM 格式的太多信息,但这里有一些线索: NextSTEP bom man page , OSX bom man page

编辑:我现在已经实现了一个版本的lsbom,我已经将它放在公共域中。代码可以在 Subversion 中找到:https ://cauldrondevelopment.com/svn/osxbom/trunk

也许有人也可以实现mkbom,然后会有一个完整的解决方案。请参阅上述代码中的头文件bom.h以获得对 BOM 文件格式的较为完整的描述。

编辑 2:mkbom的工作版本现已实施,可在此处找到: https ://github.com/hogliux/bomutils

以及有关如何在 linux 上创建安装程序的详细教程:http: //hogliux.github.io/bomutils/tutorial.html

另请参阅问题how-to-build-native-mac-os-x-installer-on-a-non-mac-platform

于 2011-11-04T22:37:38.033 回答
-1

不,你不能。您可以使用 osascript 进行脚本 ssh 登录并启动它,这样您就可以从其他地方自动化整个构建,但您只能在 Mac 上为 Mac 构建。

不过,您可以在 Mac 上完成所有构建。这样就容易多了。

于 2010-02-24T07:43:12.040 回答