首先在/ Application文件夹中搜索应用程序

时间:2012-07-20 17:23:11

标签: objective-c cocoa nsurl nsworkspace

我正在寻找一种方法来打开我的其他应用程序参数,并找到very good post here,但在我的开发人员机器上,我有10个测试/ brach /发布版本的应用程序,只有一个当前的稳定版本在/应用程序文件夹中。

这段代码:

NSWorkspace *workspace = [NSWorkspace sharedWorkspace];

NSURL *url = [NSURL fileURLWithPath:[workspace fullPathForApplication:@"My Application"]];
NSURL *url = [workspace URLForApplicationWithBundleIdentifier:@"it.my_company.my_application"];

指向错误的测试/分支/发布版本。如何在/ Application文件夹中找到我的应用程序的URL,或者至少在与当前正在运行的应用程序相同的级别找到URL?

2 个答案:

答案 0 :(得分:1)

您可以使用NSTask消息:setLaunchPathlaunchedTaskWithLaunchPath为您的其他应用提供显式路径。

类似的东西:

NSArray *args = [NSArray arrayWithObjects:nil];
[NSTask launchedTaskWithLaunchPath:@"/Applications/My Application.app/Contents/MacOS/My Application" arguments:args];

答案 1 :(得分:1)

这就是我要出来使用的:

NSWorkspace *workspace = [NSWorkspace sharedWorkspace];

NSString *appPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
appPath = [appPath stringByAppendingPathComponent:@"MyApp.app"];

if (not [[NSFileManager defaultManager] fileExistsAtPath:appPath])
    appPath = @"/Applications/MyApp.app";

if (not [[NSFileManager defaultManager] fileExistsAtPath:appPath])
    appPath = [workspace fullPathForApplication:@"MyApp"];

if (not [[NSFileManager defaultManager] fileExistsAtPath:appPath]) {
    return NO;
}
else {
    // found it in some place, now can launch.