2009-09-16 4 views
0

J'ai créé une botte de démarrage OS X minimale (essentiellement le DVD Snow Leopard avec tous les paquets et l'installateur retirés). J'ai écrit un lanceur d'application de base Cocoa pour lancer d'autres applications que j'ai mises dans le dossier Applications (l'installation minimale manque Dock and Finder).LSOpenURLSpec erreur

Lorsque je tente de lancer une application que je reçois cette erreur:

LSOpenFromURLSpec() CÉDÉS -10810 pour le chemin d'application (null) /Applications/MyApp.app

Où "MyApp.app" est le J'ai essayé de lancer l'application. J'ai essayé ceci avec la méthode openFile de NSWorkspace et l'utilité «ouverte» d'UNIX et je reçois plus ou moins la même erreur. Une façon de lancer une application est de simplement exécuter l'exécutable principal de l'application elle-même. (par exemple, /Applications/MyApp.app/Contents/MacOS/MyApp). Cependant, cette méthode est assez gênante car elle bloque le lanceur jusqu'à ce que l'application que j'ai lancé se termine. Des moyens alternatifs pour lancer une application (ou corriger l'erreur LSOpenFromURL)?

Merci

+0

Veuillez indiquer le code que vous utilisez pour appeler LSOpenFromURLSpec. –

+0

Je n'appelle pas directement LSOpenURLSpec.J'ai essayé d'utiliser l'utilitaire ouvert UNIX ainsi que [[NSWorkspace sharedWorkspace] openFile: @ "path/to/my/app"] Les deux fonctionnent normalement, juste nlt dans mon OS X minimal environnement. Si l'erreur ne peut pas être réparée, alors existe-t-il d'autres moyens de lancer une application? – indragie

Répondre

0

trouvés une solution de contournement:

/Applications/MyApp.app/Contents/MacOS/MyApp>/dev/null 2>/dev/null &

En utilisant cette commande lance des applications sans caler le lanceur. Repose sur les services de lancement, qui s'appuient sur le Finder.

0

open Votre solution de contournement de script démarre un nouveau processus d'arrière-plan exécutant le code de l'application avec sa sortie standard et l'erreur standard ouverte à /dev/null. Cela devrait fonctionner correctement.

L'équivalent C sous Mac OS X serait soit posix_spawn ou fork/vfork puis exec le fichier exécutable.