2010-11-21 5 views

Répondre

11

Je ne suis pas sûr de bien comprendre la question. Je pense que vous dites que vous avez une application (appelons-la PrimaryApplication.app) et que dans son répertoire Resources il y a une application que vous devez lancer (appelons-la Helper.app). Dans ce cas, vous utilisez -bundlePath pour obtenir le chemin d'accès à l'application en cours d'exécution, puis vous ajoutez le chemin d'accès à votre assistant à partir de là. Vous pouvez utiliser NSWorkspace pour lancer l'application une fois que vous connaissez le chemin d'accès.

NSBundle *mainBundle = [NSBundle mainBundle]; 
NSString *helperAppPath = [[mainBundle bundlePath] 
    stringByAppendingString:@"/Contents/Resources/Helper.app"]; 

[[NSWorkspace sharedWorkspace] launchApplication:helperAppPath]; 
+1

Les documents pour 'NSWorkspace' ne mentionnent que 'app name' comme argument, pas comme chemin d'accès complet. Je suppose que cela est nécessaire pour les applications situées dans des répertoires non orthodoxes (par exemple, dans le bundle de l'application de lancement)? Est-ce ainsi que Xcode lance le Simulateur iPhone intégré de nos jours? –

2

En base Fondation, CFBundleCopyResourceURL si vous obtenez l'URL de l'application. Dans Cocoa, NSBundle a des méthodes équivalentes pathForResource:ofType: et URLForResource:withExtension:.

Questions connexes