Crear sencilla envoltura de aplicación de cacao
Pregunta
Tengo una aplicación que quiero paquete (con algunos archivos adicionales) juntos dentro de una aplicación de envoltura.
Literalmente lo único que quiero hacer es tener el lanzamiento de aplicaciones envoltura de un archivo de recursos (es decir, como si lo hubiera escrito:
/path/to/Resources/Bundled.app/Contents/MacOS/executable
en el terminal.
tiene sentido? Pensé que esto debe ser simple, pero caouldn't encontrar una manera simple de hacer esto- mi programación de cacao se limita, por decir lo menos.
Gracias de antemano!
Solución
Su programa externo puede utilizar NSBundle para localizar el programa interno dentro paquete del programa externo.
Para ejecutar el programa interno: Si se trata de una aplicación, utilice Launch Services o NSWorkspace ; si se trata de una herramienta de línea de comandos, utilice NSTask .
Otros consejos
Una forma, si la envuelta “aplicación” es solamente un guión o algo así, es Platypus .
Si se trata de una aplicación real (paquete .app), ¿por qué aplicación A no hacer nada, pero la aplicación de lanzamiento B? ¿Por qué tener aplicación A en absoluto?
Tengo un blog sobre esto: Convierte cualquier script de shell en un doble se puede hacer clic aplicación. La entrada menciona "empezar con un paquete de aplicación vacío" ... que se puede obtener mediante el uso de la herramienta Pashua mencionado, si no recuerdo mal ...
Sólo por el bien de la posteridad (y si ayuda a alguien más, aquí está el código completo utilicé (dentro del archivo 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];