如何正确地对 macOS 屏幕保护程序进行代码设计?

How to properly codesign macOS Screensaver?

我正在尝试对我的 macOS 屏幕保护程序项目进行联合设计,以消除 "unidentified developer" 警告消息。 Apple's documentation and this person on Apple's forums 都说你应该使用 "Developer ID Application" 签名证书来完成。但这似乎对我不起作用。

当我关注Apple's instructions on how to test for proper signatures时,我得到的回复如下:

Screensaver.saver: rejected (the code is valid but does not seem to be an app)

我的签名设置如下所示:

我不确定此时我还应该尝试什么。主要是我担心谣言未来 mac 应用程序必须 signed/notarized 这对屏保意味着什么?

以防其他人在这里绊倒...

现在我意识到解决这个问题的一个好方法是创建一个安装程序包,然后签署 following Apple's instructions

我最终使用了一些名为 Packages 的免费软件来创建安装程序。构建安装程序后,我将其复制到另一个文件夹并使用以下命令对其进行签名。

/usr/bin/productsign --sign "<Name of Developer ID Installer Cert in Keychain>" source.pkg destination-signed.pkg

希望这对外面的人有所帮助。据我所知,这绕过了身份不明的开发者警告。

以下是额外的公证说明:

您不能直接对 .saver 进行公证,但可以以一种迂回的方式对 ZIP 文件进行公证,这就是我分发屏幕保护程序的方式。以下是我用于我的简单保护程序的步骤,你的里程无疑会有所不同:

  1. /usr/bin/codesign -f -o 运行time --timestamp --sign “插入开发者 ID 安装程序证书标识符”XYZZY.saver
  2. 压缩代码签名.saver 例如XYZZY.saver.zip
  3. /usr/bin/xcrun altool --verbose --notarize-app --primary-bundle-id “在此处插入标识符” -u “xyzzy@plugh.com” -p “插入特定于应用程序的 PW在此处获取您的 Apple ID" -t osx -f XYZZY.saver.zip
  4. 旁白:将应用专用密码存储在您的钥匙串中,然后 从命令行引用它,如下所示:
    • /usr/bin/xcrun altool --store-password-in-keychain-item "AC_PASSWORD" -u xyzzy@plugh.com -p “在此处插入来自 Apple 的 App 特定 PW”
  5. 等待公证,检查状态如下:
    • /usr/bin/xcrun altool --notarization-history 0 -u “xyzzy@plugh.com” -p "@keychain:AC_PASSWORD”
  6. 虽然您可以对 ZIP 存档进行公证,但不能装订 直接给公证票吧。相反,运行 订书机反对 您最初添加到存档中的每个单独项目。然后 创建一个新的 ZIP 文件,其中包含用于分发的装订项目。
    • /usr/bin/xcrun订书机订书钉XYZZY.saver
    • 重新压缩保存程序并 分发