使用 productbuild 对 mac 应用程序进行签名和存档,而无需使用 xcode 在 Mac App Sto



我是MAC应用程序开发的新手,并且正在从事使用Zoom Mac SDK的项目,但该SDK不支持使用Xcode进行存档,因此我需要使用缩放支持中心建议的其他工具进行存档。根据他们的回复应用程序可以使用 pkgbuild/pkgutil/productbuild 存档,但我不知道为我的 Mac 应用程序创建存档/pkg/dmg 文件的确切步骤。

另外,请让我知道我需要创建哪个文件扩展名才能从用户的网站下载我的应用程序。

我正在使用"开发人员 ID 应用程序"和"开发人员 ID 安装程序"证书对我的构建进行签名,但不知道如何在不使用 Xcode 的情况下创建构建,因为使用 Xcode,我收到第三方框架的错误,因为"代码对象根本没有签名"。

感谢您的大力帮助。

首先,你需要 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 放入该文件夹中。当您安装软件包时,在计算机上的"/应用程序"文件夹中,将有 xy.app。 您还可以将文件复制到/Library 或其他任何内容,只需在指定的根文件夹中创建文件夹即可。

当您想要安装任何.pkg/.dmg或.sdk时,您将创建一个脚本文件夹,该文件夹在--scripts ${SCRIPTSFOLDER}下指定,并在其中创建一个"安装后"文件。

安装后文件将包含将与包一起执行的内容,例如安装另一个.pkg或 .sdk,它们将位于 ${ROOTFOLDER} 中。

因此,例如,将多个.pkg文件放入${ROOTFOLDER}/Packages中。在根文件夹上,将创建/Packages 文件夹。意思是,在安装后,您可以说:

sudo installer -pkg /Packages/anotherPackageOrApp.pkg target /

完成此操作后,您将获得一个简单的包。但是,您并不真正想要仅此而已。

使用 productbuild,您可以创建分发文件:它包括产品存档的所有配置,包括产品许可证、产品自述文件、组件包列表、约束(例如最低操作系统版本)。

继续执行以下操作:

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"

现在,您得到了最终签名的软件包。包含 .sdk、.pkg 和 .dmg 的位置,这些位置可以通过安装后配置文件进行安装,或者只是复制到将安装 pkg 的计算机上的目录中。

迎接

最新更新