
在 Apple 商务中为应用程序创建文件包安装器
你可以为应用程序创建文件包安装器,然后将其添加至 Apple 商务并部署给用户。如果应用程序没有文件包安装器,你可以使用 macOS 的内置工具来创建一个以便分发。这最适合具有简单结构的应用程序,例如全部包含在一个 .app 套装中的应用程序(通常位于 /Applications 中)。
为文件包签名
你需要拥有一个受到管理式设备信任的加密签名身份,才能创建可使用 Apple 商务分发的文件包。签名身份用于验证文件包的创建者,以及确认软件包在签名之后未曾改动。如果你已加入 Apple Developer Program,则可以使用你的安装器身份。请参阅“为 App 签名以通过‘门禁’验证”。
创建安装器身份
如果没有签名身份,你可以创建一个。这类身份将包含一个你选取的名称和一个随机序列号,以作识别之用(如果你创建多个身份)。如果这些步骤在某个时候失败了,请关闭“终端”窗口,再打开一个新的窗口。你需要在搭载 macOS 13 或更高版本的 Mac 上运行这些步骤。
在桌面上创建一个名为 temp 的文件夹。
启动“终端” App,然后输入
cd并按一下空格键。将“temp”文件夹拖移到“终端” App 窗口中。
你将会看到类似如下所示的路径:
cd /Users/[YourShortUserName]/Desktop/packages按 Return 键。
输入
ID="name",其中 name 是你的组织的短名称。在不加引号的情况下,名称中不可包含空格。例如,可以将 My Organization 写作 MyOrg(无引号)或 "My Organization"(含引号)。按 Return 键。
【重要事项】所有后续命令都需要在这个窗口中输入。
粘贴以下所有命令,然后按 Return 键。
KEY="InstallerCertificate_${ID}_PrivateKey.pem"openssl req -x509 -nodes -days 365 -newkey rsa:4096 -sha256 \-addext primaryConsraints= critical,CA:false \-addext keyUsage= critical,digitalSignature \-set_serial "0x$(openssl rand -hex 4)" \-subj "/CN=Installer License ($ ID)" \-out InstallerCertificate_"$ ID".pem \-keyout "$KEY"在同一个“终端”窗口中,粘贴以下所有命令,然后按 Return 键。输入密码,以将新身份的证书设为受信任状态。
security import "InstallerCertificate_$ID.pem"security import "$KEY" \-T /usr/bin/productbuild -T /usr/bin/pkgbuildsecurity add-trusted-cert -d InstallerCertificate_"$ID".pem打开“temp”文件夹以查看新的证书(名为 InstallerCertificate_name.pem)及其私钥(名为 InstallerCertificate_name_PrivateKey.pem),其中 name 是稍早在步骤 4 中所选的名称。
请保留这个证书的副本以供存档,因为在将设备配置为信任使用此证书进行签名的文件包时,需要这一证书。
私钥已导入到你的钥匙串中以进行安全存储,因此可从此文件夹中删除。
【重要事项】请务必删除这个证书的密钥,以免其他人假装来自你的组织并为文件包签名。
身份会在创建一年后过期。届时你需要再次按照这个流程操作;如有使用上一身份签名的文件包仍在分发中,你还须重新为其签名。你的身份的 RSA 专用密钥保存在钥匙串中,以确保安全。如果要在另一台 Mac 上构建和签署文件包,你需要导出专用密钥并在需要使用的 Mac 上导入。
将设备配置为信任你的签名身份
创建签名身份后,你需要将设备配置为信任此身份。为此,你可以将此身份的证书作为配置进行分发。
获取此身份的 InstallerCertificate_name.pem,其中 name 是创建时所选的名称。
请遵循”创建证书配置“中的步骤,并将证书分配至所需的所有设备,以便你在这些设备上安装所创建的软件包。
【重要事项】任何拥有签名身份私钥的人都可以创建已配置设备信任的文件包,且不会出现任何警告。因此,如果你认为与证书匹配的私钥已丢失或未经授权被拷贝,你可以删除证书配置并创建新的签名身份。
为具有单个套装的应用程序创建文件包
在你有了将设备配置为信任的签名身份后,你可以用它来创建文件包,以便将 App 分发到各个相应设备。进行该操作时请牢记一点,将各个相关应用程序包含在单个 .app 套装中,可以最为轻松地进行分发。
确保应用程序位于你的 /Applications 文件夹中。
在桌面上创建一个名为 packages 的文件夹。
打开“终端” App,然后键入
cd并按一下空格键。将 packages 文件夹拖移到“终端” App 窗口中,然后按 Return 键。
你将会看到类似如下所示的路径:
$ /Users/[YourShortUserName]/Desktop/packages输入
productbuild --sign,然后按一下空格键。添加你的身份的名称(其中“name”是你在“创建安装器身份”任务的步骤 4 中输入的名称),按一下空格键,键入
--component,然后再按一下空格键。将应用程序从 /Applications 拖移到“终端”窗口中,然后按一下空格键。
输入文件包的名称,其末尾需要是
.pkg且名称通常与应用程序名称相同。示例如下方所示:
productbuild --sign MyCo --component /Applications/AppName AppName.pkg按 Return 键。
这个
productbuild命令会一边显示相关信息,一边处理应用程序并在 packages 文件夹中构建文件包。如果这是你第一次使用自己创建的身份,系统可能会提示你输入密码,以授权使用该身份的密钥。如果是这种情况,请输入你的密码并选择“始终允许”。
退出“终端” App。
【注】Apple 商务会拒绝在 Apple Developer Program 之外创建的身份签名的任何文件包,除非文件包由设备管理服务交付给已经配置为信任该身份的管理式设备。如果你尝试在其他设备上安装通过此方法创建的文件包,则会导致安装失败。