我有一個應用程序,我想捆綁(與一些額外的文件)在一個包裝應用程序中。創建簡單的可可應用程序包裝
字面上我想這樣做的唯一事情是有包裝應用推出一個資源文件(即,好像我打字:?
/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