如何在OSX应用程序中运行嵌入式二进制文件?

时间:2016-04-15 14:14:50

标签: objective-c xcode macos

我有一个需要运行外部程序的应用程序。

我已将此计划作为Embedded Framework加入。存档后,它会显示在%AppRoot%/Contents/Frameworks/MyExternalApplication.

位置

如何在不使用绝对路径的情况下从应用程序代码运行此程序?我想在发布和调试中运行。

谢谢!

1 个答案:

答案 0 :(得分:5)

您可以使用NSTask对象或posix_spawn()函数运行可执行文件。

您可以使用NSBundle类来查找可执行文件的绝对路径。有关详细信息,请参阅this article

注意:

  1. 这不是应用程序包中放置可执行文件的正确位置;我认为它应该在Contents/MacOS中,如记录here
  2. 如果主应用程序是沙盒(如果您想将应用程序放在Mac App Store上,则需要这样做),然后需要一个将嵌入到外部可执行文件中的权利,以便继承了应用程序的沙箱。有关详细信息,请参阅this question
  3. 一旦完成2.您将注意到可执行文件将不再从命令行运行,但是没有什么可担心的,因为它将从您的应用程序中运行。