2016-04-15 2 views
2

Ich habe eine Anwendung, die ein externes Programm ausführen muss.Wie kann ich eine eingebettete Binärdatei in meiner OSX-Anwendung ausführen?

Ich habe dieses Programm als Embedded Framework enthalten. Wenn es archiviert wird, erscheint es an der Stelle %AppRoot%/Contents/Frameworks/MyExternalApplication.

Wie kann ich dieses Programm aus dem Code meiner App ausführen, ohne einen absoluten Pfad zu verwenden? Ich würde gerne in Release und Debug laufen.

Vielen Dank!

Antwort

5

Sie können die ausführbare Datei mit einem NSTask Objekt oder der posix_spawn() Funktion ausführen.

Sie können die Klasse NSBundle verwenden, um den absoluten Pfad der ausführbaren Datei zu finden. Einzelheiten finden Sie unter this article.

Hinweise:

  1. Das ist nicht der richtige Ort innerhalb des App-Pakets ist die ausführbare Datei zu platzieren; Ich glaube, es sollte in Contents/MacOS sein, wie dokumentiert here.
  2. Wenn der Haupt-App ist Sandbox (eine Voraussetzung, wenn Sie die App auf dem Mac App Store setzen wollen), dann ein Anspruch erforderlich ist, die in die externe ausführbaren Datei eingebettet werden, so dass es erbt die Sandbox des App. Details finden Sie unter this question.
  3. Sobald Sie fertig sind 2. werden Sie feststellen, dass die ausführbare Datei nicht mehr über die Befehlszeile ausgeführt wird, aber das ist kein Grund zur Sorge, da es in Ihrer App ausgeführt wird.
Verwandte Themen