2016-04-15 9 views
2

私は外部プログラムを実行する必要のあるアプリケーションを持っています。OSXアプリケーションで埋め込みバイナリを実行するにはどうすればよいですか?

私はEmbedded Frameworkとしてこのプログラムを含めました。アーカイブされると、その場所に表示されます%AppRoot%/Contents/Frameworks/MyExternalApplication.

絶対パスを使用せずにアプリケーションのコードからこのプログラムを実行するにはどうすればよいですか?私はリリースとデバッグの両方で実行したいと思います。

ありがとうございました!

答えて

5

NSTaskオブジェクトまたはposix_spawn()関数を使用して実行可能ファイルを実行できます。

NSBundleクラスを使用すると、実行可能ファイルの絶対パスを見つけることができます。詳細については、this articleを参照してください。

注:

  1. 実行可能ファイルを配置するアプリケーションバンドル内の正しい場所ではありません。私はそれがContents/MacOSにあると信じており、hereと書かれています。
  2. 外部実行可能ファイルに埋め込まれますその後、資格が必要です(もしMac App Storeでアプリを配置する場合の要件)のメインアプリはサンドボックスある場合それアプリのサンドボックスを継承するようにします。詳細はthis questionを参照してください。
  3. 実行したら、実行可能ファイルはコマンドラインから実行されなくなりますが、それはアプリ内から実行されるため、心配することはありません。