【问题标题】:How to build a Mac OS X Installer Package from these files?如何从这些文件构建 Mac OS X 安装程序包?
【发布时间】:2012-11-06 12:45:50
【问题描述】:

已经尝试了很多方法: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
而且,如果你成功了,请告诉你你是怎么做到的!

【问题讨论】:

    标签: xcode macos package packagemaker pkg-file


    【解决方案1】:

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

    要得到你想要的,首先将 Bundle 样式的包转换为 Flat 包:
    pkgutil --flatten MacBookPro2011EFIUpdate.pkg FlatMacBookPro2011EFIUpdate.pkg

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

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

    【讨论】:

    • 嗨,我有一个 mac app 文件,并且还使用“productbuild”创建了它的包文件,即 hello.app 和 hello.pkg。现在我希望向该软件包添加许可协议。为此,我从我的 hello.app 文件中创建了 distribution.xml,现在我希望将其包含在包中,但由于不允许出现错误。
    • productbuild --synthesize --product "hello.app/Contents/Info.plist" --package hello.app distribution.xml
    • 我的示例应用程序 ... ...
    • productbuild --distribution distribution.xml hello.pkg
    猜你喜欢
    • 1970-01-01
    • 2011-09-16
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    相关资源
    最近更新 更多