Erstellen Sie einfache Kakao Anwendungswrapper
Frage
Ich habe eine Anwendung I (mit einigen zusätzlichen Dateien) zusammen in einer Wrapper-Anwendung bündeln will.
Wörtlich das einzige, was ich tun möchte, ist die Wrapper-Anwendung starten Sie eine Ressource-Datei (das heißt, als ob ich eingegeben hatte:
/path/to/Resources/Bundled.app/Contents/MacOS/executable
in das Terminal.
Sinn? Ich dachte, das sollte einfach sein, aber ich caouldn't einen einfachen Weg finden, um this-- mein Kakao Programmierung zu tun beschränkt ist, gelinde gesagt.
Vielen Dank im Voraus!
Lösung
Ihr äußerte Programm kann NSBundle verwenden, um das innere Programm innerhalb des äußeren Programms Bündel zu finden.
Um das innere Programm ausführen: Wenn es eine Anwendung, verwenden Sie Launch Services oder NSWorkspace ; wenn es ein Kommandozeilen-Tool, verwenden Sie NSTask .
Andere Tipps
Ein Weg, wenn die verpackte „Anwendung“ ist nur ein Shell-Skript oder etwas, ist Platypus .
Wenn es eine tatsächliche Anwendung (.app-Bundle), warum App A nichts anderes tun als Einführung App B? Warum haben app A überhaupt?
Ich habe einen Blog-Post bis auf diese: Schalten Sie alle Shell-Skript in einen Doppel klickbare App . Der Eintrag erwähnt „mit einem leeren App Bundle starten“ ..., die Sie mit dem Pashua Werkzeug bekommen erwähnt, wenn ich mich richtig erinnere ...
Nur aus Gründen der Nachwelt (und wenn es jemand anderes hilft, hier ist der vollständige Code I (in der AppDelegate.m Datei verwendet wird):
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];