4

我正在尝试从我的 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 用户的第一次尝试中失败。

4

1 回答 1

2

您似乎正在尝试从非 UI 进程启动应用程序。这不再受支持,因为它在LSOpenApplication内部使用,自 Lion 以来不支持非 UI 进程。请参阅此讨论以获取更多信息

于 2012-11-05T10:01:28.997 回答