NSTask:无法posix_spawn:启动应用程序时出现错误13

Lin*_*k14 5 macos xcode nstask swift

我的主Swift应用程序中有一个子应用程序。我这样做是为了在构建它时将其自动复制到主应用程序的Resources文件夹中。这样,我希望能够从主应用程序启动子应用程序的实例。

问题是,我遇到了难以调试/查找答案的错误。

这是我的代码:

    let args = ["--args", "-admin_url", site.url, "-login", site.login, "-pass", site.password]
    let helperPath = (NSBundle.mainBundle().pathForResource("App Helper", ofType: "app"))!
    let task = NSTask.init()
    task.launchPath = helperPath
    task.arguments = args
    task.launch()
Run Code Online (Sandbox Code Playgroud)

和错误:

[56490:7218926] Couldn't posix_spawn: error 13
Run Code Online (Sandbox Code Playgroud)

我不知道在哪里寻找什么。我不知道我在做什么错。我想知道问题是否与子应用程序本身有关。该子应用暂时为空。我设定Application is AgentYES。在MainMenu.xib中,我将该Visible at launch选项设置为no。该子应用程序需要在后台执行一些工作,并且根本不需要任何UI。

谢谢 !

NSG*_*God 2

不要用于NSTask此目的,请使用NSWorkspace

let helperAppURL = NSBundle.mainBundle().URLForResource("App Helper",
                                      withExtension:"app")!

_ = try? NSWorkspace.sharedWorkspace().openURL(helperAppURL,
       options:[.Default],
   configuration:[NSWorkspaceLaunchConfigurationArguments :
            ["--args", "-admin_url", site.url, "-login",
             site.login, "-pass", site.password]])
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,为了简洁起见,我忽略了命令的结果,但实际上它可以返回代表任务openURL()的实例。NSRunningApplication

要跟踪您启动的帮助程序应用程序的实例,您可以NSRunningApplication在适当类型的集合类中保留对此的引用,并在需要时调用其terminate()方法。