创建简单的cocoa应用程序包装器
我有一个应用程序,我想在一个包装器应用程序中捆绑(带有一些附加文件) 实际上,我唯一想做的就是让包装器应用程序启动一个资源文件(即,好像我键入了:创建简单的cocoa应用程序包装器,cocoa,wrapper,bundle,launcher,Cocoa,Wrapper,Bundle,Launcher,我有一个应用程序,我想在一个包装器应用程序中捆绑(带有一些附加文件) 实际上,我唯一想做的就是让包装器应用程序启动一个资源文件(即,好像我键入了: /path/to/Resources/Bundled.app/Contents/MacOS/executable 进入终点站 有意义吗?我认为这应该很简单,但我找不到一个简单的方法来实现这一点——至少可以说,我的cocoa编程是有限的 提前感谢!我有一篇关于此的博客文章:。文章中提到“从一个空的应用程序包开始”…如果我没记错的话,您可以使用上面提到
/path/to/Resources/Bundled.app/Contents/MacOS/executable
进入终点站
有意义吗?我认为这应该很简单,但我找不到一个简单的方法来实现这一点——至少可以说,我的cocoa编程是有限的
提前感谢!我有一篇关于此的博客文章:。文章中提到“从一个空的应用程序包开始”…如果我没记错的话,您可以使用上面提到的Pashua工具获得它…一种方法是,如果包装好的“应用程序”只是一个shell脚本或其他东西,则是
如果它是一个实际的应用程序(.app bundle),为什么app A只启动app B?为什么要使用app A?您的外部程序可以使用NSBundle在外部程序的bundle中定位内部程序
要运行内部程序:如果它是应用程序,请使用或;如果它是命令行工具,请使用。只是为了子孙后代(如果它对其他人有帮助,请参阅我使用的完整代码(在AppDelegate.m文件中):
有两个原因-首先是因为应用程序B有几个资源,它需要与应用程序本身位于同一文件夹中(我无法控制这种行为,这是第三方的东西)--通过这种方式,我可以将它们作为一个单独的包捆绑在一起。其次,因为在将来的某个时候,我可能会希望包装器做一些更智能的事情,比如在多个应用程序之间进行选择。您可以通过
[[[NSBundle mainBundle]executablePath]获得指向MacOS
文件夹的路径stringByDeletingLastPathComponent]
。谢谢,但是不应该使用[NSWorkspace sharedWorkspace]来代替分配新实例吗?
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];