我有一个应用程序,我想捆绑(与一些额外的文件)在一个包装应用程序中。创建简单的可可应用程序包装
字面上我想这样做的唯一事情是有包装应用推出一个资源文件(即,好像我打字:?
/path/to/Resources/Bundled.app/Contents/MacOS/executable
到终端
什么意义我想这应该是简单的,但我caouldn't找到一个简单的方法来做到this--我的Cocoa编程是有限的,至少可以说,提前
谢谢!
我有一个应用程序,我想捆绑(与一些额外的文件)在一个包装应用程序中。创建简单的可可应用程序包装
字面上我想这样做的唯一事情是有包装应用推出一个资源文件(即,好像我打字:?
/path/to/Resources/Bundled.app/Contents/MacOS/executable
到终端
什么意义我想这应该是简单的,但我caouldn't找到一个简单的方法来做到this--我的Cocoa编程是有限的,至少可以说,提前
谢谢!
你的外部程序可以使用一个NSBundle定位外程序包内的内部程序。
要运行程序内:如果它是一个应用程序,使用Launch Services或NSWorkspace;如果它是命令行工具,请使用NSTask。
我有一个博客文章:Turn any shell script into a double-clickable app。入口提到了“先建立一个空的应用程序捆绑” ......您可以通过使用Pashua工具所提到的,如果我没有记错得到...
的一种方式,如果包装“应用程序”只是一个shell脚本什么的,是Platypus。
如果它是一个实际的应用程序(.APP束),为什么一个应用程序做什么,但推出应用B?为什么要有应用程序A?
对于双reasons-第一因为应用程序B具有几个资源,其需要在同一文件夹中的,作为应用本身(I具有高于这个行为没有控制,这是第三方的东西) - 这样我可以捆绑它们放在一起作为一个单一封装 其次,因为在将来的某个时候我可能会想包装做点什么一个小b它更聪明,就像在多个应用程序中选择一样。 – 2010-01-31 15:54:37
然后你可能想自己在Xcode中做这件事。 – 2010-01-31 16:21:37
只是为了子孙后代着想(如果它可以帮助其他人,这里是完整的代码我使用(该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];
谢谢,但不应该使用[NSWorkspace sharedWorkspace]而不是分配新实例? – Raffael 2012-11-08 17:39:59
你可以到'MacOS'路径文件夹'[[[一个NSBundle mainBundle] executablePath] stringByDeletingLastPathComponent]'。 – 2010-02-01 02:51:11