Создать простую оболочку приложения какао - PullRequest
2 голосов
/ 30 января 2010

У меня есть приложение, которое я хочу связать (с некоторыми дополнительными файлами) вместе в приложении-оболочке.

Буквально единственное, что я хочу сделать - это запустить приложение-оболочку с файлом ресурсов (т. Е. Как если бы я набрал:

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

в терминал.

Имеет смысл? Я думал, что это должно быть просто, но я не мог найти простой способ сделать это - мое программирование какао ограничено, если не сказать больше.

Заранее спасибо!

Ответы [ 4 ]

3 голосов
/ 31 января 2010

Одним из способов, если завернутое «приложение» является просто сценарием оболочки или чем-то еще, является Platypus .

Если это реальное приложение (комплект .app), почему приложение A ничего не делает, кроме запуска приложения B? Почему приложение А вообще?

1 голос
/ 19 июня 2010

Просто для потомков (и, если это кому-то поможет, вот полный код, который я использовал (внутри файла 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];
1 голос
/ 31 января 2010

Ваша внешняя программа может использовать NSBundle, чтобы найти внутреннюю программу в пакете внешней программы.

Для запуска внутренней программы: если это приложение, используйте Launch Services или NSWorkspace ; если это инструмент командной строки, используйте NSTask .

1 голос
/ 30 января 2010

У меня есть запись в блоге об этом: Превратите любой сценарий оболочки в приложение с двойным кликом . В записи упоминается «начать с пустого комплекта приложений» ... которую вы можете получить с помощью упомянутого инструмента Pashua, если я правильно помню ...

...