如何在 macOS Catalina 的应用程序包中运行 shell 脚本

Posted

技术标签:

【中文标题】如何在 macOS Catalina 的应用程序包中运行 shell 脚本【英文标题】:How to run shell script inside app bundle in macOS Catalina 【发布时间】:2019-11-04 14:36:11 【问题描述】:

我目前正在开发一个 macOS AppKit 应用程序,该应用程序依赖于运行包含在应用程序包中的 shell 脚本。只有在Catalina中运行时,通过Task运行脚本会产生如下错误:

Traceback (most recent call last): File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 174, in _run_module_as_main

我能够通过在 Xcode 项目中完全禁用 App Sandbox 来阻止问题的发生。 TaskcurrentDirectoryURL 设置为应用根据沙盒异常明确允许访问的位置。

如何在不禁用 App Sandbox 的情况下运行捆绑脚本?

【问题讨论】:

【参考方案1】:

我自己对此很陌生,所以我可能是错的,但我正在开发一个将任务用于外部进程的应用程序,这就是解决我的权限问题的方法。

您可以在权利文件中授予其他权限。 https://developer.apple.com/documentation/security/app_sandbox_entitlements

【讨论】:

澄清一下,为了避免在 Catalina 中遇到该错误,您在 Sandbox 配置中进行了哪些更改? 我编辑了这些设置所在选项卡的另一张图片。我更改了您看到的标记为读/写的部分。它们是只读的。其余的位于您可以在项目浏览器中找到的权利文件中。您可以添加项目,下拉列表中有许多可能的例外情况。

以上是关于如何在 macOS Catalina 的应用程序包中运行 shell 脚本的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MacOS (sierra-catalina) 上为分区获取可用空间

如果通过双击 JNLP 文件启动 JAVA Web Start 应用程序,如何允许它访问 macOS Catalina 上的文件系统?

如何在macos升级和安全?

如何在 macOS Catalina 上使用 Instruments 附加进程?

[转帖]如何在VirtualBox中运行macOS Catalina Beta版本

如何从 macOS Catalina build 10.15.4 运行 java?