Ich habe das folgende AppleScript, das die Bildlaufrichtung auf dem Trackpad umschaltet:
tell application "System Preferences"
activate
set current pane to pane "com.apple.preference.trackpad"
end tell
tell application "System Events"
tell process "System Preferences"
click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
click checkbox 1 of tab group 1 of window "Trackpad"
end tell
end tell
tell application "System Preferences"
quit
end tell
Dieses Skript wird ohne Probleme ausgeführt, wenn die Schaltfläche „Play“ in Automator verwendet wird, um es auszuführen. Wenn ich jedoch einen Dienst erstelle, der ihn ausführt, und dem Dienst eine Tastenkombination zuweist, kann er nicht über die Tastenkombination ausgeführt werden.
Wenn Sie es in einen try
Block mit einigen Fehlerberichten einpacken, erhalten Sie Folgendes:
Automator Runner ist kein unterstützender Zugriff gestattet.
Fehlernummer-1728
Ich habe Automator Runner.app gefunden und ihm mithilfe der hier zu findenden Anweisungen unterstützenden Zugriff gewährt .
Es wird jetzt mit einem aktivierten Kontrollkästchen in der Liste der Anwendungen mit unterstützendem Zugriff angezeigt:
Das Problem besteht jedoch weiterhin. Ich erhalte weiterhin dieselbe Meldung, die mich darüber informiert, Automator Runner is not allowed assistive access.
wenn ich versuche, das Skript mit dem Tastaturbefehl des Dienstes auszuführen, der das Skript ausführt.
Es ist mir gerade gelungen, dieses alternative Skript zu implementieren, um dasselbe zu erreichen, aber es funktioniert auch nur, wenn Automator den Fokus hat, und hat das gleiche Problem, wenn dies nicht der Fall ist:
tell application "System Preferences"
reveal anchor "trackpadTab" of pane "com.apple.preference.trackpad"
end tell
tell application "System Events" to tell process "System Preferences"
click checkbox 1 of tab group 1 of window 1
end tell
quit application "System Preferences"
Wichtiger Hinweis zu AppleScript-Aktionen in Automator-Workflows.
Hoffentlich hilft das anderen, die nach einer Lösung suchen.
Wenn Ihr Skript Dinge wie tell application "System Events"
das Abrufen von UI-Daten aus App-Fenstern oder das Senden virtueller Tastenanschläge usw. verwendet, ist "unterstützender Zugriff" erforderlich.
Dies kann in verschiedenen Versionen von Mac OS unterschiedlich heißen, ist aber im Allgemeinen in Systemeinstellungen > Sicherheit & Datenschutz > Datenschutz > Eingabehilfen unter „Zulassen, dass die folgenden Apps Ihren Computer steuern“ zu finden .
Wenn Sie den unterstützenden Zugriff für die Anwendungen Automator und Skripteditor aktivieren , können Ihre Workflows und Skripts von diesen Tools aus ausgeführt werden, jedoch nicht, wenn sie als eigenständige Apps gespeichert werden. Theoretisch sollte das Aktivieren des Zugriffs für jede App auch dazu führen, dass sie mit Systemereignissen kommuniziert.
Aber wie viele festgestellt haben , hat Automator oft Probleme beim Erstellen von Apps, denen assistierender Zugriff gewährt werden kann, wenn solche Apps AppleScript-Code enthalten. Ganz zu schweigen davon, dass Diensten solche Berechtigungen überhaupt nicht erteilt werden können , da es sich nicht um Apps handelt.
Sie können jedoch stattdessen eigenständige AppleScript-Apps aus der Skript-Editor- Anwendung erstellen und ihnen problemlos unterstützenden Zugriff gewähren.
Sie können solche Apps dann wie folgt als Teil eines Automator- oder Shell-Workflows ausführen:
AppleScript-Aktion in Automator
do shell script "osascript -e 'tell application \"My Granted App Name\" to activate'"
Shell-Skript
(kann auch aus einer Automator-Aktion stammen)
osascript -e 'tell application "My Granted App Name" to activate'
Dies funktioniert auch beim Erstellen von Diensten in Automator. Lassen Sie einfach Ihren Dienst die App ausführen, für die eine Berechtigung erteilt wurde, anstatt zu versuchen, dem Dienst selbst einen berechtigungserfordernden Code hinzuzufügen.
Beachten Sie, dass für den tell app
Aufruf weder die Erweiterung „.app“ noch ein Pfad erforderlich ist. Wenn Sie viele Apps mit demselben Namen haben, sollte es eine Möglichkeit geben, die App anhand ihrer Bundle-ID usw. abzurufen.
Ich bin mir nicht sicher, ob dies ein Automator-spezifisches Problem ist, da ich nicht versucht habe, ausgefallene AppleScripts von Apps aufzurufen, die mit anderen Tools als diesem und dem Skripteditor erstellt wurden. In jedem Fall sollte das obige für andere IDEs/Compiler/usw. funktionieren. sowie.
In den meisten Fällen erfordert das Bearbeiten und Neuerstellen einer gewährten App, dass ihr der Zugriff erneut gewährt wird. Es hilft also, alles gut im Automator/Script Editor zu testen, bevor Sie die eigenständige App erstellen, um sich den Ärger zu ersparen. Wenn Ihr Skript von einem größeren Projekt aufgerufen wird, das Sie routinemäßig neu kompilieren, ist es am besten, dieses Skript in eine eigene App umzuwandeln, um ihm einmalig Zugriff zu gewähren, und die App von Ihrem größeren Projekt aus auszuführen. Zumindest bis das größere Projekt abgeschlossen ist.
Für Apps, die von mehreren Skripts verwendet werden, können Sie sie an einem einheitlichen Ort aufbewahren, z. B. in einem benutzerdefinierten Ordner /Applications/Tools/Scripts . Denken Sie jedoch daran, dass jeder Code von Drittanbietern Apps starten und somit Ihre potenziell sensiblen Skripte aktivieren kann. Es ist wichtig, die Auswirkungen auf die Sicherheit zu berücksichtigen, wenn Sie Code erstellen, der den unterstützenden Zugriff verwendet.
Es gibt Zeiten, in denen das erneute Gewähren einer neu erstellten App nicht "dauert". In solchen Fällen löst es normalerweise das Umbenennen der App und das erneute Hinzufügen über die Systemeinstellungen. Sie sollten die App später wieder in ihren ursprünglichen Namen umbenennen können. Dies ist ein Fehler, bei dem Assistive Access seine Liste von Apps zwischenspeichert und der Dateiname und/oder Pfad irgendwie involviert sind. Wenn jemand weiß, wie man diesen Cache löscht, fügen Sie bitte einen Kommentar hinzu; es wäre sehr hilfreich.
Ich vermute, Sie haben möglicherweise nicht wirklich ein Problem, das "gedebuggt" werden könnte.
Lesen Sie diese Anleitung von macosxautomation.com, um zu erfahren, wie Applets, die ihre "Erlaubnis" zum Ausführen nicht dauerhaft behalten, von Mac OS X akzeptiert werden.
Der Trick besteht darin, eine spezielle ResourceRules-ignoring-Scripts.plist zu installieren, in der Sie Ihre App (let) signieren und registrieren. (Aber lesen Sie die WARNUNG auf dieser Webseite!)
Der Grund dafür ist, dass einige Apps Informationen "in sich selbst" speichern und daher beim nächsten Ausführen nicht identisch / erkannt werden.
(Aber wie auch immer: Auch wenn dir der Rat des Guides NICHT weiterhilft, könnte er dennoch für andere interessant sein ...)
Ich weiß, dass dies eine alte Frage ist, aber ich war gerade mit diesem Problem konfrontiert und habe es geschafft, es zu umgehen, also dachte ich, ich würde eine Antwort posten.
Ich hatte an anderer Stelle gelesen, dass das Hinzufügen Automator Runner.app
zum Bereich „Datenschutz/Barrierefreiheit“ der Systemeinstellungen den Fehler nicht verhindern würde, also habe ich es nicht versucht, aber was für mich funktioniert hat, war das Einfügen des gesamten Workflows in ein neues Workflow-Dokument „Anwendung“. Ich habe das am selben Ort wie den Dienst gespeichert und dann einen neuen „Dienst“-Workflow erstellt, der nur eine Sache tat: die neue Anwendung ausführen, die ich gerade erstellt hatte.
Ich habe diese Anwendung dann zum Bereich „Datenschutz/Barrierefreiheit“ der Systemeinstellungen hinzugefügt. Wenn ich den Dienst jetzt ausführe, erhalte ich keinen Berechtigungsfehler.
Keine Antwort, aber ...
Um zu versuchen, Fehler zu beheben, würde ich das Skript in seine Komponenten zerlegen, also nur grob aufteilen
tell application "System Preferences"
activate
set current pane to pane "com.apple.preference.trackpad"
end tell
& auf Fehler testen
Dann füge hinzu
tell application "System Events"
tell process "System Preferences"
click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
end tell
end tell
Nochmal Überprüfen
& weiter, bis Sie den Fehlerpunkt gefunden haben
Eine Möglichkeit wäre, sys events & sys prefs in Ihrer aktuellen Running Order umzukehren, aber das ist nur ein Schuss ins Blaue.
Hoffentlich wird jemand mit besseren Applescript-Kenntnissen als ich eine bessere Lösung bereitstellen.
tell
Block wird ausgeführt, ohne den Fehler zu verursachen. Es taucht auf, wenn der Block Systemereignisse und Systemeinstellungen hinzugefügt wird.Bei der Arbeit an https://apple.stackexchange.com/a/436069/53510 bin ich auf dieses Problem gestoßen.
Für mich scheint die (teilweise, unvollständige) Lösung zu sein:
Ich habe die Lösung gefunden!!! Ich fand, dass der beste Weg, diesen Fehler zu vermeiden, darin besteht, zuerst + zu verwenden und die Anwendung auf diese Weise hinzuzufügen. Dann versuchen Sie es auszuführen. (D. h. versuchen Sie nicht, es zuerst auszuführen. D. h. ziehen Sie es nicht zuerst per Drag & Drop hinein.)
Als letzte Lösung: Öffnen Sie die Systemeinstellungen. Entfernen Sie die App mit Minus. Sperren. Beenden Sie die Systemeinstellungen. Öffnen Sie die Systemeinstellungen erneut. App mit Pluszeichen hinzufügen. Sperren. Beenden Sie die Systemeinstellungen. Versuchen Sie dann, die App auszuführen. Nehmen Sie sich Zeit mit jedem dieser Schritte ... überstürzen Sie es nicht. Funktioniert immer noch nicht. Sie können einen Neustart und einige Abmelde-Anmeldungen mischen ... es wird irgendwann funktionieren ... klingt nach Wahnsinn, ich weiß ... aber es funktioniert.
Monterey 12.4.
Danke an SIMCC
Tetsujin
Schlüsselhalter
Tetsujin
Schlüsselhalter
davidhq
davidhq