我正在 Xcode 9 中编写一个基于 swift 的 macOS 应用程序,以便在我的计算机上使用(未分发)。我在/usr/local/bin 中安装了 EXIFtool(独立于应用程序),并且可以从终端应用程序成功使用它。我正在尝试从我的应用程序访问 EXIFtool。
我的应用程序有一个按钮,单击该按钮后应通过执行此脚本来运行 EXIFtool 命令。
@IBAction func arrowClicked(_ sender: Any) {
arrow.isEnabled = false
let task = Process.launchedProcess(launchPath: "/usr/local/bin/exiftool", arguments: [rawURL])
task.waitUntilExit()
arrow.isEnabled = true
}
脚本失败并出现“启动路径不可访问”错误。我输入什么作为参数并不重要(在上面的代码片段中,rawURL 是一个字符串,其中包含用户识别的图像文件的路径。
我在这里找到的类似问题的答案主要关注路径的格式(例如,必须是完整路径,以/开头等)。我的启动路径来自终端对“which exiftool”的响应,所以我认为它是正确的。
更新:我按照 Matt 提供的链接重写了代码以利用 shell 脚本。我使脚本可执行并通过终端和 TextWrangler 成功运行它。但在 Xcode 中访问它会导致“操作不允许”消息。
最佳答案
关闭应用程序沙箱可以解决原始的“启动路径无法访问”消息和修改后的尝试的“不允许操作”消息。
关于Swift 4 LaunchedProcess 启动路径不可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47100274/