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

时间:2012-01-25 23:14:04

标签: objective-c cocoa sandbox nsworkspace

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

现在的问题是,教程对于如何从这个帮助应用程序中启动主应用程序包的方式并不十分具体。它仅包括:

[[NSWorkspace sharedWorkspace] launchApplication:
@"/Path/To/Main/App/Bundle"];

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

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

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

1 个答案:

答案 0 :(得分:6)

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

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

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