0

我有一个带有 Sparkle 框架的 Qt 5.4 应用程序。从我们的服务器下载后,Mac OS X 10.11 上的 Gatekeeper 会显示“unidentified developer”错误。经过一些研究(codesign --strict 显示 sparkle 中缺少文件),我删除了 Sparkle 框架中损坏的符号链接。然后我重建了应用程序,使用 codesign 和 spctl 检查

codesign --verbose --deep --strict myapp.app

结果是:myapp.app:满足其指定要求

spctl --assess --type exec --verbose myapp.app 显示:接受

接下来我构建了 dmg 映像,从映像安装,应用程序运行没有问题。然后我将 dmg 上传到服务器,并从我们的服务器下载。MD5 校验和匹配。

但是,在我将应用程序拖放到 /Applications 文件夹并运行它后,操作系统显示应用程序已损坏,必须将其移至垃圾箱。相同的 codesign 命令仍返回“满足其指定要求”,但相同的 spctl 命令显示:

代码没有资源,但签名表明它们必须存在

只需从我们的服务器下载应用程序,spctl 输出就会发生变化。我不认为它与资源有任何关系(应用程序确实有资源),因为同一个构建脚本已经创建了几个没有这个错误的版本。该脚本确实修改了 qt 框架结构,但适用于 10.10。

我构建了一个新的 Mac OS 10.11,安装了 xcode 7.0.1、Qt 5.5,重新构建了应用程序(没有修改 App 包中 Qt 框架结构的脚本)。完全相同的结果:应用程序在上传前通过了 codesign 和 spctl,下载后失败并出现同样的错误。

从本质上讲,在 Sparkle 框架中删除了损坏的链接后,应用程序包从“身份不明的开发者”变为“损坏的图像”。

谁能告诉我哪里出错了?

4

0 回答 0