为什么 MacOS 应用程序不能从 Launchpad 或 Finder 运行,但可以从 Terminal 运行?

为什么 MacOS 应用程序不能从 Launchpad 或 Finder 运行,但可以从 Terminal 运行?

我正在运行 MacOS 10.14.2。

从终端运行有效。

> "/Applications/Racket v7.1/bin/DrRacket"

但是当我从 Launchpad 启动应用程序时,DrRacket 崩溃或无法运行(无法分辨是哪种情况),在 Finder 中找到可执行文件并右键单击并选择“打开”(这应该允许我绕过任何安全检查)时也是如此。

答案1

这是由于代码签名过时造成的。MacOS 阻止它运行。为了覆盖此行为,DrRacket 的开发人员告诉我将应用程序从文件夹中拖出并放回文件夹中,以强制 MacOS 信任该应用程序。这有效。

答案2

由于它是跨平台的,Racket 不是使用标准构建的macOS 应用程序包打开 DMG 只会显示一个文件夹,而不是应用程序。文件夹中是 DrRacket.app,可通过 Finder 或 Launchpad 启动。它还包含用于更传统的命令行安装的各种文件夹。

从 Racket 7.2 开始,“/Applications/Racket\ v7.2/bin/drracket”(注意是小写)是一个 shell 脚本,用于通过终端启动 GUI 应用程序。文件夹中还包含一个基于终端的“racket”应用程序。

如果您想要快速启动 GUI 或使用 Spotlight,您可以将 DrRacket.app 文件从 Racket 7.X 文件夹的顶层拖到桌面或 Dock。

答案3

如果您想一次性修复 Racket 下载中的所有应用程序(错误仍然存​​在/在 monterey beta/m1 上返回),您可以在顶层 Racket 文件夹(您从 dmg 中复制出来的文件夹)的终端中执行以下命令:

find . -name '*.app' -exec xattr -d com.apple.quarantine "{}" \;

这将删除文件的隔离属性。


如果您在应用程序目录中运行它,它将取消隔离所有二进制文件(通常不是您想要的,但如果您刚刚移动到新机器并且不想手动授权您安装的每个未签名的应用程序,它会很有帮助)。

相关内容