【问题标题】:Swift error: launch path not accessibleSwift 错误:无法访问启动路径
【发布时间】:2015-05-10 21:57:07
【问题描述】:

我正在做一个简单的 OSX 应用程序来从 StatuBar 菜单显示/隐藏 Finder 中的隐藏文件。

这是显示/隐藏文件的 IBAction:

 @IBAction func menuClicked(sender: NSMenuItem) {
    let task = NSTask()
    task.currentDirectoryPath = "/var/tmp/"

    task.launchPath = "usr/bin/defaults"

    if(sender.state == NSOnState){
        sender.state = NSOffState
        task.arguments = ["write", "com.apple.finder", "AppleShowAllFiles", "NO"]
    }else{
        sender.state = NSOnState
        task.arguments = ["write", "com.apple.finder", "AppleShowAllFiles", "YES"]
    }

    task.launch()
    task.waitUntilExit()

    let killTask = NSTask()
    killTask.launchPath = "usr/bin/killall"
    killTask.arguments = ["Finder"]
    killTask.launch()
}

这给了我这个错误:

2015-05-10 23:54:22.237 ShowHideFiles[1234:303] An uncaught exception was raised
2015-05-10 23:54:22.238 ShowHideFiles[1234:303] launch path not accessible

我试图找出原因,但找不到答案。

我还尝试通过禁用一个或另一个来查看两个启动路径中的哪一个是错误的,它们都给出了相同的错误。

有人可以帮帮我吗?

【问题讨论】:

  • 启动路径不应该以斜杠开头吗? “/usr/bin/killall”、“/usr/bin/defaults”
  • 是的!!!!这就是原因!咳咳!!! (将其作为答案,以便我检查);D
  • 知道为什么我不能运行 /Users/me/Downloads/ 文件夹中的程序吗?尽管我可以在 /usr/bin 中运行任何东西,但我不断收到“无法访问启动路径”。

标签: shell swift


【解决方案1】:

varusr 处于同一级别,因此您需要像 var 那样在 usr 前加上 / 前缀:

task.currentDirectoryPath = "/var/tmp/"
task.launchPath = "/usr/bin/defaults"
killTask.launchPath = "/usr/bin/killall"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    相关资源
    最近更新 更多