1

已经尝试了很多方法: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.)


请尝试从以下文件构建安装程序包:链接
如果成功,请告诉您您是如何做到的!

4

1 回答 1

11

使用的正确命令确实是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

于 2012-11-20T04:35:33.303 回答