Problème
Applescript exécuté par osascript n'est pas autorisé. Assistive Access lorsqu'il est lancé par l'agent ( ~/Library/LaunchAgents
). Bien que cela fonctionne lorsqu'il est exécuté à partir de l'éditeur Applescript ou en ligne de commande directement (avec osascript).
Situation
Applescript effectue plusieurs tâches d'interface graphique pour l'impression par lots et est exécuté deux fois par jour. Par conséquent, il doit être autorisé à accéder aux appareils d'assistance et est lancé par un agent.
Le script s'exécute comme prévu lorsqu'il est lancé à partir de:
- Applescript Editor
- ligne de commande osascript (non sudo)
Lorsqu'il est lancé par l'agent, il renvoie:
/location/of/my.scpt: execution error: System Events got an error: osascript does not have access to assistive devices. (-25211)
(Message traduit du néerlandais par moi.)
Cela m'a amené à croire que le problème est lié à osascript, mais comme je l'ai indiqué ci-dessus, il fonctionne correctement lorsqu'il est entré directement à partir de la ligne de commande à l'aide de: osascript /location/of/my.scpt
.
En outre, basé sur celles-ci deux messages j'ai édité le /Library/Application\ Support/com.apple.TCC/TCC.db
La base de données SQLite et quand je vérifie la table 'accès', elle montre:
$ 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 constater, l'accès javascript est autorisé et j'ai également ajouté le fichier .plist de mon agent.
Cause possible?
La seule chose à laquelle je puisse 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 que, par conséquent, différents dispositifs d'assistance sont autorisés? Cela semble toutefois peu probable, car le fichier TCC.db ne semble pas être spécifique à l'utilisateur et l'agent se trouve dans ~/Library/LaunchAgents
.
Aide, quelqu'un?
la source
/path/to/script.applescript:1226:1292: execution error: LSOpenURLsWithRole() failed with error -10810 for the file /path/to/templatefile.lbx. (1)
. Les bits d'exécution ont été définis sur les fichiers .applescript et .lbx. Je suppose que cela a quelque chose à voir avec le changement de la description de la pomme en texte?execution error: System Events got an error: osascript is not allowed assistive access. (-1719)
dans mon fichier journal et ne pas être invité par les préférences système dans 10.12.6Bien que j'aie accepté la question de @ markhunte parce que cela fonctionne dans le cas général, cela n'a pas fonctionné pour moi. C'est pourquoi je publie ma propre solution comme alternative.
Créer un script shell qui lance l'applescript
Lorsque le launchagent exécute un script shell qui appelle simplement le script pomme (.scpt), il doit être autorisé une fois à accéder aux périphériques d'assistance.
Dans mon cas, je me suis retrouvé avec le suivant LaunchAgent .plist
Ce LaunchAgent appellera le
shellscript.sh
deux fois par jour comme spécifié par leStartCalendarInterval
clé. Notez également leStandardErrorPath
etStandardOutPath
clés utiles lors du débogage.Le shellscript.sh est extrêmement simple:
Comme vous pouvez le constater, une simple ligne shebang spécifie qu’il s’agit bien d’un script de shell suivi d’un appel unique à l’applecript que j’appelais directement à partir du LaunchAgent.
la source