gpt4 book ai didi

macos - 使用 Productbuild 对 mac 应用程序进行签名和存档,无需使用 xcode 在 Mac App Store 之外分发应用程序

转载 作者:行者123 更新时间:2023-12-02 15:54:50 27 4
gpt4 key购买 nike

我是 MAC 应用程序开发新手,正在开发使用 Zoom Mac SDK 的项目,但该 SDK 不支持使用 Xcode 存档,因此我需要使用 Zoom 支持中心建议的其他工具进行存档。根据他们的回复,应用程序可以使用 pkgbuild/pkgutil/productbuild 进行存档,但我不知道为我的 Mac 应用程序创建 archive/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放入其中。当您安装该软件包时,在计算机上的“/Applications”文件夹中,将会有 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 的计算机上的目录。

问候

关于macos - 使用 Productbuild 对 mac 应用程序进行签名和存档,无需使用 xcode 在 Mac App Store 之外分发应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48077574/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com