Я пишу быстрое приложение macOS на основе Xcode 9 для использования на моем компьютере (не распространяется). У меня установлен EXIFtool (независимо от приложения) в /usr/local/bin, и я могу успешно использовать его из приложения Terminal. Я пытаюсь получить доступ к 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 — это строка, содержащая путь к файлу изображения, указанному пользователем.
Ответы, которые я нашел здесь на подобные вопросы, сосредоточены на формате пути (например, должен быть полный путь, начинаться с / и т. д.). Мой путь запуска исходит из того, что Терминал дает ответ на «какой exiftool», поэтому я подумал, что это правильно.
ОБНОВЛЕНИЕ: я перешел по ссылке, предоставленной Мэттом, и переписал код, чтобы использовать сценарий оболочки. Я сделал скрипт исполняемым и успешно запустил его через Terminal и TextWrangler. Но доступ к нему в Xcode привел к сообщению «операция не разрешена».