Creare semplice wrapper di applicazione di cacao
Domanda
Ho una domanda che voglio impacchettare (con alcuni file aggiuntivi) insieme all'interno di un'applicazione wrapper.
Letteralmente l'unica cosa che voglio fare è avere il lancio applicazione wrapper di un file di risorse (cioè come se avessi scelto:
/path/to/Resources/Bundled.app/Contents/MacOS/executable
nel terminale.
Fai senso? Ho pensato che questo dovrebbe essere semplice, ma io caouldn't trovare un modo semplice per farlo questo-- mia programmazione di cacao è limitata, per non dire altro.
Grazie in anticipo!
Soluzione
Il programma esterno può utilizzare NSBundle per individuare il programma interiore all'interno fagotto del programma esterno.
Per eseguire il programma interno: Se si tratta di un'applicazione, utilizzare Launch Services o NSWorkspace ; se si tratta di uno strumento da riga di comando, utilizzare NSTask .
Altri suggerimenti
Un modo, se l'avvolta “applicazione” è solo uno script di shell o qualcosa del genere, è Platypus .
Se si tratta di un'applicazione effettiva (.app bundle), perché App A non fanno altro che lancio app B? Perché avere app A a tutti?
Ho un post sul blog su questo: Trasformare qualsiasi script di shell in un doppio cliccabile App . La voce parla di "iniziare con un pacchetto app vuoto" ... che si può ottenere utilizzando lo strumento Pashua detto, se non ricordo male ...
Solo per il gusto dei posteri (e se aiuta chiunque altro, ecco il codice completo che ho usato (all'interno del file 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];