我们需要动态构建Mac软件包,如果有办法在Windows或Linux平台上创建相同的软件包而不是在Mac上使用PackageMaker,那将会很方便。有什么想法吗?
答案 0 :(得分:18)
我不同意这是不可能的。您当然可以在另一个操作系统上完成PackageMaker在OSX上所做的所有事情。这只是创建这些文件的问题:
Contents/
Archive.bom
Archive.pax.gz
Info.plist
PkgInfo
Resources/
TokenDefinitions.plist
package_version
en.lproj/
Description.plist
可以使用 plistlib 在Python中轻松创建.plist文件,这是Python中的标准。 .bom和.pax.gz有点棘手,但其余的都是文本文件。
.pax.gz文件的.gz部分表示它是使用gzip压缩的。这可以在Windows和Linux上使用。
根据pax man page,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。
答案 1 :(得分:0)
但是,您可以在Mac上执行所有构建。这种方式更容易。