我正在尝试从 Mac OS X 上的另一个应用程序(例如 app1)启动我的一个应用程序(例如 app2)10.7.4。我使用下面的代码来实现相同的目的:
[ [ 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)。
另外,我在“所有消息“在控制台中:
2012 年 11 月 4 日 11:47:48.329 PM com.apple.launchd[1]:系统:错误:12B19:launchd + 79534 [AEF41441-17BC-36E6-B1F8-57BADBDFEBCF]:0x0
2012 年 11 月 4 日 11:47:48.329 PM com.apple.launchd[1]: 系统:此 API 只能由在 Aqua 会话中运行的进程使用。
2012 年 11 月 4 日 11:47:48.329 PM App1[2405]:spawn_via_launchd() 失败,errno=5 label=[0x0-0x57057].com.ak.app1 path=/var/root/Library/Caches/com. ak.app2/app2.app/Contents/MacOS/app2 标志=0
奇怪的是,只有 root 用户第一次尝试才会失败。
您似乎正在尝试从非 UI 进程启动应用程序。这不再受支持,因为它使用LSOpenApplication
在内部,自 Lion 以来不支持非 UI 进程。请看这个讨论 http://lists.apple.com/archives/cocoa-dev/2011/Aug/msg00196.html了解更多信息
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)