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