Question

J'ai une application que je veux regrouper (avec quelques fichiers supplémentaires) ainsi que dans une application wrapper.

littéralement la seule chose que je veux faire est d'avoir l'application wrapper lancer un fichier de ressources (à savoir, comme si je l'avais tapé:

/path/to/Resources/Bundled.app/Contents/MacOS/executable

dans le terminal.

sens? Je pensais que cela devrait être simple, mais je caouldn't trouver un moyen simple de faire this-- ma programmation de cacao est limitée, pour le moins.

Merci d'avance!

Était-ce utile?

La solution

Votre programme externe peut utiliser NSBundle pour localiser le programme intérieur dans le paquet du programme externe.

Pour exécuter le programme interne: S'il est une application, utilisez Launch services ou NSWorkspace ; si elle est un outil de ligne de commande, utilisez NSTask .

Autres conseils

Une façon, si le enveloppé « application » est juste un script shell ou quelque chose, est Platypus .

Si c'est une application réelle (paquet .app), pourquoi l'application A ne rien faire, mais l'application de lancement B? Pourquoi l'application A tout?

J'ai un billet de blog sur ceci: Transformez ne importe quel script shell dans un double-cliquable app . L'entrée mentionne « commencer par un paquet app vide » ... que vous pouvez obtenir en utilisant l'outil Pashua mentionné, si je me souviens bien ...

Juste pour la postérité (et si elle aide quelqu'un d'autre, voici le code complet je (dans le fichier AppDelegate.m):

NSString *appName = @"";
NSString *bundledApp = [[NSBundle bundleWithPath:[[NSBundle
                                                           mainBundle] pathForResource:appName ofType:@"app"]]
                          bundlePath];
NSWorkspace *launchApp = [[NSWorkspace alloc] init];
NSLog(@"Launching %s", bundledApp);
[launchApp launchApplication:bundledApp];
[launchApp release];

// Make Launcher terminate (if it serves no other purpose)
[NSApp terminate:nil];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top