Problème
Applescript exécuté par osascript n'est pas autorisé à accéder aux dispositifs d'assistance lorsqu'il est lancé par un agent (~/Library/LaunchAgents
). Bien qu'il fonctionne lorsqu'il est exécuté à partir de l'éditeur Applescript ou de la ligne de commande directement (en utilisant osascript).
Situation
L'Applescript effectue plusieurs tâches GUI pour l'impression par lots et est exécuté deux fois par jour. Par conséquent, il a besoin d'autorisation pour accéder aux dispositifs d'assistance et est lancé par un agent.
Le script s'exécute comme prévu lorsqu'il est lancé à partir de :
- l'Éditeur Applescript
- la ligne de commande osascript (non sudo)
Lorsqu'il est lancé par l'Agent, il renvoie :
/location/of/my.scpt: une erreur d'exécution s'est produite : System Events a généré une erreur : osascript n'a pas accès aux dispositifs d'assistance. (-25211)
(Message traduit du néerlandais par moi-même.)
Cela m'a amené à croire que le problème vient d'osascript, mais comme je l'ai indiqué ci-dessus, il fonctionne correctement lorsqu'il est saisi directement à partir de la ligne de commande en utilisant : osascript /location/of/my.scpt
.
Aussi, en me basant sur ces deux articles, j'ai modifié la base de données SQLite /Library/Application\ Support/com.apple.TCC/TCC.db
et lorsque je vérifie la table 'access', cela affiche :
$ sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "SELECT * FROM access"
Password:
kTCCServiceAccessibility|com.logitech.gaming|0|1|0|??
kTCCServiceAccessibility|com.valvesoftware.steam|0|1|0|??
kTCCServiceAccessibility|com.blizzard.starcraft2|0|0|1|
kTCCServiceAccessibility|com.apple.AccessibilityInspector|0|1|0|??
kTCCServiceAccessibility|com.apple.ScriptEditor2|0|1|0|??
kTCCServiceAccessibility|com.apple.Terminal|0|1|0|??
kTCCServiceAccessibility|/usr/bin/osascript|1|1|1|
kTCCServiceAccessibility|com.my.label|0|1|1|
kTCCServiceAccessibility|/osascript|1|0|1|
Comme vous pouvez le voir, osascript a l'autorisation d'accès et j'ai également ajouté le .plist de mon agent par précaution.
Cause Possible?
La seule chose à laquelle je peux penser est que, pour une raison quelconque, le script est exécuté par un 'utilisateur différent' lorsqu'il est lancé par un Agent et a donc des dispositifs d'assistance différents autorisés? Cela semble improbable, cependant, car la TCC.db ne semble pas être spécifique à l'utilisateur et l'agent est situé dans ~/Library/LaunchAgents
.
Aide, quelqu'un?