MacOsX:如何从“命令行工具”类型的应用程序启动应用程序(.app)

时间:2013-03-18 18:40:50

标签: xcode macos command-line

在Xcode 4.6中,我基于“命令行工具”项目模板创建了一个新应用程序。 如何以编程方式从该“命令行工具”应用程序启动另一个应用程序(.app应用程序包)?

2 个答案:

答案 0 :(得分:3)

使用启动服务和/或NSWorkspace可以通过多种方式实现此目的。

标识捆绑应用程序的一种更灵活的方法是通过其捆绑标识符(CFBundleIdentifier),这是一个类似com.apple.TextEdit的字符串。这使您可以识别应用程序,而无需对将要找到应用程序的假定路径进行硬编码,或者通过硬编码应用程序包的名称,这两者都可以轻松更改。您可以使用NSWorkspace的{​​{3}}来启动该应用。如果您还不知道它,可以通过检查其AppName.app/Contents/Info.plist文件来获取应用程序包的包标识符。然后使用以下代码:

if (![[NSWorkspace sharedWorkspace]
       launchAppWithBundleIdentifier:@"com.apple.TextEdit"
                             options:NSWorkspaceLaunchDefault
      additionalEventParamDescriptor:NULL
                    launchIdentifier:NULL]) {
      NSLog(@"launching app failed!);
}

重要提示:NSWorkspaceAppKit.framework框架的一部分,该框架最初未包含在“命令行工具”项目模板中。要将其添加到项目中,请在目标列表中选择目标,如下图所示,然后单击+按钮添加其他框架。

enter image description here

同时添加AppKit.frameworkCocoa.framework

这将导致所有3个列在Link Binary With Libraries步骤中。此时,您可以从关联阶段删除Foundation.frameworkAppKit.framework,只留下Cocoa.framework,如下所示:

enter image description here

答案 1 :(得分:0)

你试过“开放”吗?至少在终端“打开”运行文件和/或应用程序。