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

Jak*_*nds 1 macos xcode package packagemaker pkg-file

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

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

Distribution - xml script
MacBookPro2011EFIUpdate.pkg - flat package
Resources - resources folder, contains language localizations
Run Code Online (Sandbox Code Playgroud)

扁平包装信息:

id="com.apple.pkg.MacBookPro2011EFIUpdate" version="2.7.0.0.1.1330468277"
Run Code Online (Sandbox Code Playgroud)

例如,我对productbuild的失败:

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


请尝试从这些文件构建安装程序包:链接
如果成功,请告诉您如何执行此操作!

小智 10

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

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

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

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