我们需要即时构建 Mac 包,如果有一种方法可以在 Windows 或 Linux 平台上创建相同的包,而不是在 Mac 上使用 PackageMaker,那将会很方便。有任何想法吗?
2 回答
我不同意这是不可能的。您当然可以在另一个操作系统上完成 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 文件实际上可以采用多种不同的存档格式,包括cpio和tar,在 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。
不,你不能。您可以使用 osascript 进行脚本 ssh 登录并启动它,这样您就可以从其他地方自动化整个构建,但您只能在 Mac 上为 Mac 构建。
不过,您可以在 Mac 上完成所有构建。这样就容易多了。