Sandboxed Helper App无法启动正确的父应用程序

mir*_*val 3 cocoa sandbox objective-c nsworkspace

我正在使用本教程向我的应用程序添加登录项.大部分都按预期工作,我已设法创建一个沙盒帮助应用程序并将其注册到启动服务,因此它应该在登录时启动.

现在的问题是,该教程并不是非常具体地说明了如何从这个帮助应用程序中启动主应用程序包.它仅包括:

[[NSWorkspace sharedWorkspace] launchApplication:
@"/Path/To/Main/App/Bundle"];
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用任何NSWorkspace方法以完整路径启动应用程序,它将失败,因为Sandbox不允许这样做.

如果我尝试将上述方法的参数设置为我的应用程序名称,它可以正常工作,但奇怪地启动我的应用程序的旧版本(我将这些存储在我的硬盘上,但它们不在/ Applications文件夹中,仅我的应用程序的正确版本位于/ Applications文件夹中)

现在有人为什么会这样,或者我怎么能解决这个问题?

Sar*_*ahR 6

我发现Helper应用程序需要可执行文件的路径,而不是bundle的路径.

所以,如果你给它:/应用/我的大App.app尝试使用:/Applications/MyGreatApp.app/Contents/MacOS/My大应用

如果沙盒应用程序不在"应用程序"文件夹中,则会在记录各种权限错误时以静默方式失败.