首先,您需要 pkgbuild 和 productbuild 来做一些富有成效的事情。
您可以在此处指定根文件夹、标识符、版本、安装位置、标牌和安装后脚本。
例如:
pkgbuild --root "${ROOTFOLDER}" \
--identifier "${IDENTIFIER}" \
--version ${VERSION} \
--install-location "/" \
--sign "${IDENTITY}" \
--scripts '${SCRIPT}' \
"${PKGNAME}.pkg"
在您的 ${ROOTFOLDER} 中,您可以控制文件/文件夹,就像在“/”之后的本地计算机上一样。例如,如果您想将“xy.app”放入 /Applications,您可以在 ${ROOTFOLDER} 中创建一个“Applications”文件夹并将 xy.app 放入其中。当您安装软件包时,在您机器上的“/Applications”文件夹中,将会有 xy.app。您还可以将文件复制到 /Library 或其他任何地方,只需在指定的根文件夹中创建文件夹即可。
当您想要安装任何 .pkg / .dmg 或 .sdk 时,您将创建一个您在 --scripts ${SCRIPTSFOLDER} 下指定的脚本文件夹,并在其中创建一个“安装后”文件。
postinstall 文件将包含将与您的包一起执行的内容,例如安装另一个 .pkg 或 .sdk,它们将位于您的 ${ROOTFOLDER} 中。
例如,将多个 .pkg' 文件放入 ${ROOTFOLDER}/Packages 中。在您的根文件夹中,将创建 /Packages 文件夹。意味着,在您的安装后,您可以说:
sudo installer -pkg /Packages/anotherPackageOrApp.pkg target /
完成之后,你得到了一个简单的包。然而,你真的不想要那个。
使用 productbuild,您可以创建一个分发文件:它包括产品存档的所有配置,包括产品许可证、产品 README 文件、组件包列表、约束(例如最低操作系统版本)。
继续执行以下操作:
productbuild --synthesize --package "${PKGNAME}.pkg" distribution.dist
现在您已经从包中取出了您的 distribution.dist,您可以随意编辑它。重新构建它:
productbuild --distribution distribution.dist --scripts "${SCRIPTS}" --sign "${IDENTITY}" --package-path "${PKGNAME}.pkg" --resources . --version ${VERSION} "${PKGNAME}_New.pkg"
现在你得到了最终的签名包。包含可以通过 postinstall 文件安装的 .sdk、.pkg 和 .dmg 的位置,或者只是复制到将安装 pkg 的计算机上的目录。
问候