我已经在发布模式下以Xcode构建了一个应用程序。已使用有效的开发人员ID证书签名。该应用程序在某些MacBook上可以正常启动。 但是在另一次启动时失败,并显示错误
无法打开应用程序%name%。
然后我尝试使用open
命令从终端启动它
LSOpenURLsWithRole()失败,文件/ Applications / Gaetano Lunches.app出现错误-54。
然后我尝试直接从包内容中启动二进制文件 它说
-bash:/ Applications / Gaetano Lunches.app/Contents/MacOS/Gaetano Lunches:不允许操作
在所有MacBooks应用上,都可以从任何地方安装。 spctl-master已禁用。文件权限正确。但是该应用无法启动。
答案 0 :(得分:0)
我不知道您如何构建应用程序,但是如果LSOpenWIthRole
返回permError = -54
,则表示您在打开文件时出现权限错误。这可能意味着很多事情,但是Apple不再建议您以发布模式构建应用程序。 Apple希望您使用存档,然后在Organizer中导出应用程序以供用户使用。通过使用此工作流程,通常您可以使用Xcode默认值来构建应用程序来完成所有操作。如果不这样做,则需要更加谨慎选择在发布模式下进行构建的设置。
对于一种快速而肮脏的方法,我将尝试以下操作:
1)打开终端
2)类型:chmod +x "/Applications/Gaetano Lunches.app/Contents/MacOS/Gaetano Lunches"
3)尝试启动您的应用,看看是否有帮助。如果有帮助,则说明您的构建设置有些混乱,即无法在某处更改文件权限,以使可执行文件具有启动正确的权限。
您可以尝试的另一件事是查看应用程序是否被Gatekeeper列入了黑名单,因为它以某种方式确定了您的应用程序正在您自己的系统上做可疑的事情。如果是这种情况,那么您可以尝试执行以下操作以查看网守正在评估的内容:
spctl -a "/Applications/Gaetano Lunches.app"
如果由于某些奇怪的原因您的应用程序被Gatekeeper列入了黑名单,您可以随时手动添加您的应用程序并将其列入Gatekeeper的白名单:
spctl --add "/Applications/Gaetano Lunches.app"
如果全部失败,则可以尝试重置整个数据库,但是您将需要超级用户访问权限:
sudo spctl --reset-default
但是,我认为这些只是快速修复,而如果您仍然需要这样做,是因为必须调整Xcode中的构建设置。如果这些解决方案中的任何一种有效,那么更多。让我知道这一点。