Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建简单的cocoa应用程序包装器_Cocoa_Wrapper_Bundle_Launcher - Fatal编程技术网

创建简单的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];