我想在Mac上的Sandbox中通过LSOpenApplication()启动另一个自己的应用程序。
当然,我在权利文件中的“com.apple.security.temporary-exception.files.absolute-path.read-write”中添加了一行用于启动。
然而,在启动时,控制台吐出一个错误,该错误不允许进程xxxx启动“foo.app”,因为它以前没有被用户启动过。 手动启动过程后,它可以无错误地启动。
即使之前没有启动,我该如何启动该流程? 这与沙盒无关吗?
答案 0 :(得分:14)
在极少数情况下,您可以启动另一个应用程序并获得所需的结果。 com.apple.security.temporary-exception.files.absolute-path.read-write对LaunchServices没有任何帮助,因此您可以删除该权利。
作为一个沙盒应用程序,您实际上可以进行子启动,这是一种有意的行为,因为启动另一个应用程序在技术上违反了沙箱模型。您可以使用的方式是:
我会说osascript调用有效,因为它与 - [NSWorkspace launchApplication:]大致相同。接受包标识符或绝对/相对路径的LS调用都不起作用。
答案 1 :(得分:0)
使用osascript
osascript -e 'tell application "foo" to open'