我有一个带有Sparkle框架的Qt 5.4应用程序。 Mac OS X 10.11上的关守将显示"未识别的开发者"从我们的服务器下载后出错。经过一些研究(codesign --strict在sparkle中显示缺少文件),我在Sparkle框架中删除了破坏的符号链接。然后我重建了应用程序,检查了codeign和spctl
代码签名--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 bundle中的Qt框架结构)。完全相同的结果:应用程序在上传之前传递了codesign和spctl,并在下载后失败并出现相同的错误。
本质上,在Sparkle框架中删除断开的链接后,应用程序包从"未识别的开发人员"到了"损坏的图像"。
有人可以告诉我哪里出错了吗?