2016-04-15 2 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. После того, как вы сделали 2. вы заметите, что исполняемый файл больше не будет работать из командной строки, но об этом не о чем беспокоиться, поскольку он будет запускаться из вашего приложения.
Смежные вопросы