我正在尝试从我的 Mac OS X 10.7.4上的另一个应用程序(例如 app1)启动我的一个应用程序(例如 app2) 。我正在使用以下代码:
[ [ NSWorkspace sharedWorkspace ] launchApplicationAtURL:[NSURL fileURLWithPath:appPath] options:NSWorkspaceLaunchDefault configuration:[NSDictionary dictionaryWithObject:[NSArray arrayWithObject: @"mode"] forKey:NSWorkspaceLaunchConfigurationArguments] error:&err];
这工作正常,除了第一次,即如果我们有一台新机器,那么当以 root 用户身份首次尝试从 app1 启动 app2 时第一次尝试失败,但随后工作正常。
以下是我在转储 NSError 时遇到的错误:
2012-11-05 07:47:48 +0000:应用程序“App2”无法启动,因为发生了其他错误(OSStatus -10810)。
此外,我在控制台的“所有消息”中收到以下消息:
11/4/12 11:47:48.329 PM com.apple.launchd[1]:系统:错误:12B19:launchd + 79534 [AEF41441-17BC-36E6-B1F8-57BADBDFEBCF]:0x0
11/4/12 11:47:48.329 PM com.apple.launchd[1]:系统:此 API 只能由在 Aqua 会话中运行的进程使用。
11/4/12 11:47:48.329 PM App1[2405]:spawn_via_launchd() 失败,errno=5 标签=[0x0-0x57057].com.ak.app1 路径=/var/root/Library/Caches/com。 ak.app2/app2.app/Contents/MacOS/app2 flags=0
奇怪的想法是它只在 root 用户的第一次尝试中失败。