首页 > 解决方案 > 如何查看 Delphi 应用程序的 Apple Notarize 日志

问题描述

我的 Delphi 10.3.2 应用程序未通过 Apple 的公证。

我已经能够让另一个不同的应用程序成功公证。

如何查看包含公证失败结果的日志文件?

(Xcode 的说明没有帮助,因为 Xcode 似乎认为日志与 Xcode 产品档案相关联,这是一个 Delphi 项目。)

在 PAServer 中打开详细设置会显示使用 altool 请求 --notarization-info 的最后一个命令。这是其类型中唯一的命令。在此命令后不久,来自 Apple 的电子邮件通知我公证失败。

当我的其他项目公证成功时, --notarization-info 命令在PAServer中出现了几十次才成功。

我回去尝试对一直成功的项目进行公证。我收到来自 Apple 的电子邮件,说它已经过公证,但 Delphi(不是 PAServer)显示此错误:

[PAClient 错误] 错误:E5896 2019-07-24 11:16:23.235 altool[2270:146899] *** 错误:Apple 服务操作失败。找不到 RequestUUID。

PAServer 的输出:

> command_line: "/usr/bin/plutil" -convert binary1 "/Users/michaelleahy/PAServer/scratch-dir/Mikes SSD Dell-Mikes Dell SSD/ChessOpeningsWizardExpressBuild107.app/Contents/Info.plist"
> command_line: "/usr/bin/codesign" -o runtime --timestamp --entitlements "/Users/michaelleahy/PAServer/scratch-dir/Mikes SSD Dell-Mikes Dell SSD/ChessOpeningsWizardExpressBuild107.entitlements" --deep -s "Developer ID Application: Bookup" -f "/Users/michaelleahy/PAServer/scratch-dir/Mikes SSD Dell-Mikes Dell SSD/ChessOpeningsWizardExpressBuild107.app"
> command_line: "/usr/bin/ditto" -c -k --keepParent "/Users/michaelleahy/PAServer/scratch-dir/Mikes SSD Dell-Mikes Dell SSD/ChessOpeningsWizardExpressBuild107.app" "/Users/michaelleahy/PAServer/scratch-dir/Mikes SSD Dell-Mikes Dell SSD/ChessOpeningsWizardExpressBuild107.app.zip"
> command_line: "/usr/bin/xcrun" altool -t osx --notarize-app --primary-bundle-id com.bookup.chessopeningswizardexpress -u appleid@mysite.com -p lgsp-xxxx-yyyy-xxxx -f "/Users/michaelleahy/PAServer/scratch-dir/Mikes SSD Dell-Mikes Dell SSD/ChessOpeningsWizardExpressBuild107.app.zip"
> command_line: "/usr/bin/xcrun" altool --notarization-info 8a88a10f-3868-4958-8bca-10eea92a305b -u "appleid@mysite.com" -p "lgsp-xxxx-yyyy-xxxx"
> command_line: "/usr/bin/xcrun" altool --notarization-info 8a88a10f-3868-4958-8bca-10eea92a305b -u "appleid@mysite.com" -p "lgsp-xxxx-yyyy-xxxx"
> command_line: "/usr/bin/xcrun" altool --notarization-info 8a88a10f-3868-4958-8bca-10eea92a305b -u "appleid@mysite.com" -p "lgsp-xxxx-yyyy-xxxx"
> command_line: "/usr/bin/xcrun" altool --notarization-info 8a88a10f-3868-4958-8bca-10eea92a305b -u "appleid@mysite.com" -p "lgsp-xxxx-yyyy-xxxx"
> command_line: "/usr/bin/xcrun" altool --notarization-info 8a88a10f-3868-4958-8bca-10eea92a305b -u "appleid@mysite.com" -p "lgsp-xxxx-yyyy-xxxx"
> command_line: "/usr/bin/xcrun" altool --notarization-info 8a88a10f-3868-4958-8bca-10eea92a305b -u "appleid@mysite.com" -p "lgsp-xxxx-yyyy-xxxx"
> command_line: "/usr/bin/xcrun" altool --notarization-info 8a88a10f-3868-4958-8bca-10eea92a305b -u "appleid@mysite.com" -p "lgsp-xxxx-yyyy-xxxx"
> command_line: "/usr/bin/xcrun" altool --notarization-info 8a88a10f-3868-4958-8bca-10eea92a305b -u "appleid@mysite.com" -p "lgsp-xxxx-yyyy-xxxx"
> command_line: "/usr/bin/xcrun" altool --notarization-info 8a88a10f-3868-4958-8bca-10eea92a305b -u "appleid@mysite.com" -p "lgsp-xxxx-yyyy-xxxx"
> command_line: "/usr/bin/xcrun" altool --notarization-info 8a88a10f-3868-4958-8bca-10eea92a305b -u "appleid@mysite.com" -p "lgsp-xxxx-yyyy-xxxx"
> command_line: "/usr/bin/xcrun" altool --notarization-info 8a88a10f-3868-4958-8bca-10eea92a305b -u "appleid@mysite.com" -p "lgsp-xxxx-yyyy-xxxx"
> command_line: "/usr/bin/xcrun" altool --notarization-info 8a88a10f-3868-4958-8bca-10eea92a305b -u "appleid@mysite.com" -p "lgsp-xxxx-yyyy-xxxx"
> command_line: "/usr/bin/xcrun" altool --notarization-info 8a88a10f-3868-4958-8bca-10eea92a305b -u "appleid@mysite.com" -p "lgsp-xxxx-yyyy-xxxx"
> command_line: "/usr/bin/xcrun" altool --notarization-info 8a88a10f-3868-4958-8bca-10eea92a305b -u "appleid@mysite.com" -p "lgsp-xxxx-yyyy-xxxx"
> command_line: "/usr/bin/xcrun" altool --notarization-info 8a88a10f-3868-4958-8bca-10eea92a305b -u "appleid@mysite.com" -p "lgsp-xxxx-yyyy-xxxx"
> command_line: "/usr/bin/xcrun" altool --notarization-info 8a88a10f-3868-4958-8bca-10eea92a305b -u "appleid@mysite.com" -p "lgsp-xxxx-yyyy-xxxx"

从那以后我就猜到了这个问题。显然,未签名的可执行文件位于应用程序包中。在这种情况下,代码签名可能会失败,而 Delphi 忽略了这一点。删除有问题的可执行文件允许对应用程序进行公证。

我仍然无法查看公证过程中的日志。

标签: delphidelphi-10.3-rionotarize

解决方案


您必须通过以详细模式运行命令行 ALTOOL 来查看日志。这是我所做的:

"/usr/bin/ditto" -c -k --keepParent "/Users/eee/PAServer/scratch-dir/admin-MACMini/eee.Pkg.bak" "/Users/eee/PAServer/scratch-dir/admin -MACMini/eee.Pkg.zip"

"/usr/bin/xcrun" altool -t osx --notarize-app --primary-bundle-id za.co.eee -u eee@eee.co.za -p veet-teee-geee-xeee -f " /Users/eee/PAServer/scratch-dir/admin-MACMini/eee.Pkg.zip"

注意对--verbose命令行的补充:

“/usr/bin/xcrun” altool --verbose --notarization-info 2ceeeb2c-eeee-eeee-bce8-16fae417eeee2 -u “eee@eee.co.za” -p “eeet-eeen-eeh-xdha”

错误消息以 JSON 格式返回。寻找需要复制并粘贴到浏览器中的 URL。粘贴 URL 后,将显示另一条 JSON 格式的消息。在那里你会发现导致应用程序没有被通知的问题:

“消息”:“可执行文件未启用强化运行时。”。

要解决此问题,您必须在 Delphi IDE 中启用以下设置:

项目选项 -> 应用程序 -> 权利列表

  1. 允许执行 JIT 编译的代码 = True
  2. 允许未签名的可执行内存 = True
  3. 禁用可执行内存保护 = True

公证程序现在应该可以工作了。


推荐阅读