2017-11-03 5 views
0

私は、コンピュータ上で(配布されていない)使用するために、Xcode 9にswiftベースのmacOSアプリケーションを作成しています。私はEXIFtoolを/ usr/local/binにインストールして(アプリケーションとは独立して)、ターミナルアプリケーションから正常に使用できます。私は自分のアプリからEXIFtoolにアクセスしようとしています。Swift 4 launchProcessの起動パスにアクセスできない

私のアプリには、このスクリプトを実行して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」への応答を与えるものから来ている(例えば、など、/で始まる、完全なパスでなければなりません)ので、私はそれが正しいと思った


UPDATE:私はマットのリンクをたどってシェルスクリプトを利用するコードを書き直しました。スクリプトを実行可能にして、TerminalとTextWranglerで正常に実行しましたが、Xcode内でアクセスすると "操作が許可されていません"というメッセージが表示されます

+0

私はなぜhttps://stackoverflow.com/questions/3221432/nstask-launch-path-not-accessibleが答えでないのか分かりません。確かに必要なプロセスはbashまたはperlですか? – matt

答えて

1

App Sandboxを無効にすると、元の「起動パスにアクセスできない」メッセージと修正された試行の「操作が許可されていません」メッセージの両方が解決されます。

関連する問題