Skip to content
字数
481 字
阅读时间
3 分钟

应用程序未在运行 错误:

txt
{
	NSAppleScriptErrorAppName = "Google Chrome";
    NSAppleScriptErrorBriefMessage = "Application isn\U2019t running.";
    NSAppleScriptErrorMessage = "Google Chrome got an error: Application isn\U2019t running.";
    NSAppleScriptErrorNumber = "-600";
    NSAppleScriptErrorRange = "NSRange: {40, 3}";
}

出现这个错误,是由两个系统级限制导致的:

  1. App 当前运行在沙盒模式下(暂时不清楚具体原理)[1] [2]
  2. 需要配置和设定 NSAppleEventsUsageDescription [3]

此处相关需要注意的属性和字段是:NSAppleEventsUsageDescriptionApple 开发者官方文档

  1. 可以通过临时添加权限许可来处理[4]
xml
<key>com.apple.security.temporary-exception.apple-events</key>
<array>
    <string>com.apple.Mail</string>
</array>

<项目名称>.entitlements 文件中添加字段 com.apple.security.temporary-exception.apple-events,Type(类型)设定为 Array(数组):

创建好之后在点一下字段名左手边箭头以展开编辑,然后在每一行的 Value(值)中填写需要获取的 App 权限的 appID(比如 Safari 是 com.apple.Safari

添加许可以后重新运行,发现新的错误:

txt
{
    NSAppleScriptErrorAppName = "Google Chrome";
    NSAppleScriptErrorBriefMessage = "Not authorized to send Apple events to Google Chrome.";
    NSAppleScriptErrorMessage = "Not authorized to send Apple events to Google Chrome.";
    NSAppleScriptErrorNumber = "-1743";
    NSAppleScriptErrorRange = "NSRange: {43, 3}";
}

c# - ScriptError: Visual Studio 2017 macOS 版本运行代码时提示:发送 Apple Events 到 Terminal 未授权 - Stack Overflow

xcode - 尝试在 Swift mac os App 中集成 Apple Script 以获取 macOS 上应用程序的 gui 元素 - Stack Overflow

激活 App 沙盒

具体可以参考一下这篇文章: Executing AppleScript in a Mac app on macOS Mojave and dealing with AppleEvent sandboxing

贡献者

文件历史


  1. macos - 无法在 Swift 中运行 AppleScript - Stack Overflow ↩︎

  2. 技术性 Q&A QA1888: OS X 的沙盒模式和自动化脚本 ↩︎

  3. xcode - 在 Swift 中执行 AppleScript 得到 "Application isn’t running. (error -600)(应用程序未在运行)" 错误 - Stack Overflow ↩︎

  4. applescript - Apple Script 在基于 Swift 的 macOS 应用程序上运行时失败 - Stack Overflow ↩︎

撰写