У меня есть приложение, которое должно перезапустить приложение док-станции. Я попытался это как с Apple, Script:Перезагрузите док из приложения
var errorDict: NSDictionary? = nil
let appleScript = NSAppleScript(source: "tell application \"Dock\" to quit")
var error = appleScript?.executeAndReturnError(&errorDict)
if let errorDict = errorDict {
println("An error occured: \(errorDict)")
}
... и NSTask
:
let task = NSTask()
task.launchPath = "/usr/bin/killall"
task.arguments = ["Dock"]
task.launch()
... и еще NSTask
:
func restartFinder() {
let task = NSTask()
task.launchPath = "/bin/bash"
task.arguments = ["killall Dock"]
task.launch()
}
Тем не менее, кажется, мое приложение не разрешено его перезапускать. Я хотел бы выпустить свое приложение в AppStore, но как я могу перезапустить док?
Ошибка при использовании Apple, сценарий:
An error occured: {
NSAppleScriptErrorAppName = Dock;
NSAppleScriptErrorBriefMessage = "Application isn\U2019t running.";
NSAppleScriptErrorMessage = "Dock got an error: Application isn\U2019t running.";
NSAppleScriptErrorNumber = "-600";
NSAppleScriptErrorRange = "NSRange: {27, 4}";
}
Ошибка при использовании NSTask
:
killall: warning: kill -TERM 255: Operation not permitted
Update
Я также пробовал с STPrivilegedTask, который не работал я тоже. Я также не получил окно auth.
Вы не можете сделать это из песочницы. Что вы пытаетесь достичь? – duskwuff
Я пытаюсь перезапустить Dock, потому что я изменил ключ 'mcx-expose-disabled' для' com.apple.dock', используя 'CFPreferencesSetAppValue'. Чтобы изменения вступили в силу, мне нужно перезапустить Dock. –
Вы не можете писать в настройках док-станции из изолированного приложения, насколько я знаю? – duskwuff