如何从这些文件构建Mac OS X安装程序包?

时间:2012-11-18 11:02:53

标签: xcode macos package packagemaker pkg-file

已经尝试了很多方法:pkgbuild,productbuild,PackageMaker,Packages应用程序......

我要构建的扁平包的结构:

Distribution - xml script
MacBookPro2011EFIUpdate.pkg - flat package
Resources - resources folder, contains language localizations

扁平包裹信息:

id="com.apple.pkg.MacBookPro2011EFIUpdate" version="2.7.0.0.1.1330468277"

例如,我使用productbuild失败了:

productbuild: error: Cannot copy package "MacBookPro2011EFIUpdate.pkg" into product.
(Bundle-style package "MacBookPro2011EFIUpdate.pkg" is not supported.)


请尝试从这些文件构建安装程序包:Link
而且,如果你成功了,请告诉你如何做到这一点!

1 个答案:

答案 0 :(得分:9)

正确使用的命令确实是productbuild,但它只适用于Flat包,如错误所示。而你的MacBookPro2011EFIUpdate.pkg是一个Bundle风格的包:很容易区分Bundle风格的包是一个目录,而Flat包是一个xar存档。

要获得您想要的,首先将Bundle风格的包转换为Flat包:
pkgutil --flatten MacBookPro2011EFIUpdate.pkg FlatMacBookPro2011EFIUpdate.pkg

然后生成一个使用这个新Flat包的新分发文件:
productbuild --package FlatMacBookPro2011EFIUpdate.pkg --synthesize newdist.dist

将您的分发文件中的脚本和资源条目复制到newdist.dist中。然后建立你的最终包:
productbuild --resources Resources/ --distribution newdist.dist MyCoolPackage.pkg