我们有一个移植到Mac的多平台命令行可执行文件和库。文件布局为
[与应用程序一起,这是在带有代码签名的DMG中发货的。直到卡塔琳娜(Catalina),这一切正常。
现在在Catalina上,我们已对所有可执行文件,dylib,应用程序(包括嵌套在顶级应用程序框架中的应用程序),框架和DM本身进行了代码签名。当我们对其进行公证时,生成的JSON日志不会列出任何问题。但是,当我运行任何可执行文件这取决于我们的dylibs
时,会弹出一个对话框,告诉我“无法识别开发人员”。即使已签名并经过公证也可以。使用-dvvv选项运行codesign包括以下内容:
- SHA-256哈希选择
- 以Apple Root CA结尾的授权条目列表
- TeamIdentifier条目
- 时间戳
- 运行时:10.13.0
问题
如何解决此问题,或者至少让Gatekeeper告诉我
为什么不接受此文件?也许是日志,或等效的spctl --assess文件而不是应用程序?观察
- 仅当
- 操作系统是Catalina
- 位于/ Applications文件夹下
- / Applications之外(例如,在桌面上的文件夹中),它有时仅会发生(有时它声称dylib不能在第一次尝试中加载,如果稍后再尝试,则成功)
- 可执行文件取决于我们的一个或多个dylib(独立的dylib运行正常)
- 可执行文件具有com.apple.quarantine xattr设置
- 我已经尝试在干净文件和下载文件(即隔离区文件)之间混合使用'n'匹配项,并且仅当可执行文件被隔离时才会出现问题;它不在乎非隔离的可执行文件是否加载隔离的dylib
[签名操作是通过带有args“ --deep --strict --timestamp --options runtime”的codesign完成的,然后进行了验证- 编辑:此后,我已经对其进行了更新,以包括一些强化的运行时权利以解决另一个构建问题,但是它对此没有帮助
可执行文件通过@rpath依赖于dylib(如otool -L所报告)- 编辑:在每种情况下,我都尝试用@executable_path /../ lib替换@rpath,但这没有帮助
我们有一个移植到Mac的多平台命令行可执行文件和库。文件布局为/ Applications /(公司文件夹)/(我们的UI).app(产品名称)/ bin / ......