Tengo el siguiente AppleScript que alterna la dirección de desplazamiento en el panel táctil:
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
Este script se ejecuta sin problemas cuando se utiliza el botón "reproducir" en Automator para ejecutarlo. Sin embargo, cuando hago un servicio que lo ejecuta y le asigno un atajo de teclado al servicio, no se ejecuta a través del atajo de teclado.
Al envolverlo en un try
bloque con algunos informes de errores se obtiene lo siguiente:
Automator Runner no tiene permitido el acceso de asistencia.
Error número 1728
Encontré Automator Runner.app y le di acceso de asistencia utilizando las instrucciones que se encuentran aquí .
Ahora aparece con una casilla marcada en la lista de aplicaciones con acceso de asistencia:
Sin embargo, el problema persiste. Sigo recibiendo el mismo mensaje que me notifica que Automator Runner is not allowed assistive access.
cuando intento ejecutar el script usando el comando del teclado del servicio que ejecuta el script.
Actualizar
Simplemente logré implementar este script alternativo para lograr lo mismo, pero también solo funciona cuando Automator tiene el foco y tiene el mismo problema cuando no:
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"
fuente
Respuestas:
Acceso de asistencia
Si su script usa cosas como
tell application "System Events"
obtener datos de la interfaz de usuario de las ventanas de la aplicación o enviar pulsaciones de teclas virtuales, etc., entonces requerirá "acceso de asistencia".Esto se puede llamar diferentes cosas en diferentes versiones de Mac OS, pero generalmente se puede encontrar en Preferencias del sistema> Seguridad y privacidad> Privacidad> Accesibilidad , en "Permitir que las aplicaciones a continuación controlen su computadora" .
Habilitar el acceso de asistencia para las aplicaciones de Automator y Script Editor permitirá que sus flujos de trabajo y scripts se ejecuten desde esas herramientas, pero no cuando se guardan como aplicaciones independientes. En teoría, habilitar el acceso para cualquier aplicación también debería permitirle hablar con System Events.
Problema con AppleScripts ejecutado desde acciones de Automator
Pero como muchos han descubierto , Automator a menudo tiene problemas para crear aplicaciones a las que se les puede otorgar acceso de asistencia, cuando tales aplicaciones contienen código AppleScript. Por no mencionar el hecho de que los servicios no se pueden conceder tales permisos en absoluto , ya que no son aplicaciones.
Solución alternativa
Sin embargo, puede crear aplicaciones AppleScript independientes desde la aplicación Script Editor en su lugar, y otorgarles acceso de asistencia sin problemas.
Luego puede ejecutar dichas aplicaciones como parte de un Automator o flujo de trabajo de shell, como este:
Acción AppleScript en Automator
Shell Script
(también puede ser de una acción de Automator)
Esto también funciona para crear servicios en Automator. Simplemente haga que su servicio ejecute la aplicación con permiso otorgado, en lugar de intentar agregar el código que requiere permiso al servicio en sí.
Tenga en cuenta que la
tell app
llamada no requiere la extensión ".app", ni siquiera una ruta. Si tiene muchas aplicaciones con el mismo nombre, debería haber una manera de obtener la aplicación por su identificador de paquete, etc.Otros IDEs
No estoy seguro de si este es un problema específico de Automator, ya que no he intentado llamar a AppleScripts sofisticados desde aplicaciones creadas con herramientas distintas a eso y Script Editor. De cualquier manera, lo anterior debería funcionar para otros IDE / compiladores / etc. también.
Reconstruyendo tu aplicación
En la mayoría de los casos, editar y reconstruir una aplicación otorgada requiere que se le vuelva a otorgar acceso. Por lo tanto, es útil probar todo bien en Automator / Script Editor antes de compilar la aplicación independiente, para evitarle problemas. Si su secuencia de comandos es invocada por un proyecto más grande que recompila habitualmente, es mejor convertir esa secuencia de comandos en su propia aplicación para otorgarle acceso una vez y ejecutar la aplicación desde su proyecto más grande. Al menos hasta que se complete el proyecto más grande.
Para las aplicaciones utilizadas por múltiples scripts, puede mantenerlas en un lugar consistente como una carpeta personalizada / Aplicaciones / Herramientas / Scripts . Sin embargo, recuerde que cualquier código de terceros puede iniciar aplicaciones y así activar sus scripts potencialmente confidenciales. Es importante tener en cuenta las implicaciones de seguridad al crear código que utiliza el acceso de asistencia.
Cuando volver a otorgar no funciona
Hay momentos en que volver a otorgar una aplicación reconstruida no "toma". En tales casos, cambiar el nombre de la aplicación y volver a agregarla a través de Preferencias del sistema generalmente resuelve esto. Debería poder cambiar el nombre de la aplicación a su original más adelante. Este es un error con la forma en que el Acceso de asistencia almacena en caché su lista de aplicaciones, y el nombre de archivo y / o la ruta están involucrados de alguna manera. Si alguien sabe cómo borrar este caché, agregue un comentario; sería muy útil.
fuente
Sospecho que en realidad no tienes un problema que podría ser "depurado".
Lea esta Guía de macosxautomation.com sobre cómo hacer que Mac OS X acepte los applets que no mantienen permanentemente su "permiso" para ejecutarse.
El truco consiste en instalar un ResourceRules-ignooring-Scripts.plist especial en el que firmas y registras tu aplicación (let). (¡Pero lea la ADVERTENCIA en esta página web!)
La razón es que algunas aplicaciones guardan información "en sí mismas" y, por lo tanto, no serán idénticas / reconocidas la próxima vez que se ejecuten.
(Pero de todos modos: incluso si el consejo de la Guía NO lo ayuda , aún podría ser de interés para otros ...)
fuente
Sé que esta es una vieja pregunta, pero estaba enfrentando este problema en este momento y logré solucionarlo, así que pensé en publicar una respuesta.
Había leído en otra parte que agregar
Automator Runner.app
al panel Privacidad / Accesibilidad de Preferencias del Sistema no evitaría el error, así que no lo intenté, pero lo que funcionó para mí fue pegar todo el flujo de trabajo en un nuevo documento de flujo de trabajo de "Aplicación". Lo guardé en la misma ubicación que el servicio y luego creé un nuevo flujo de trabajo "Servicio" que solo hizo 1 cosa: ejecutar la nueva aplicación que acababa de crear.Luego agregué esa aplicación al panel Privacidad / Accesibilidad de Preferencias del Sistema. Ahora, cuando ejecuto el servicio, no obtengo el error de permisos.
fuente
No es una respuesta, pero ...
Para intentar depurar, deconstruiría la secuencia de comandos a sus componentes, por lo que me dividiría aproximadamente
& prueba de cualquier error
Luego añade
revisar otra vez
y adelante hasta encontrar el punto de falla
Una posibilidad sería revertir los eventos del sistema y las preferencias del sistema en su orden de ejecución actual, pero eso es solo una oportunidad en la oscuridad.
Con suerte, alguien con mejores chops de applecript que yo proporcionaré una mejor solución.
fuente
tell
bloque se ejecuta sin causar el error. Emerge cuando se agrega el bloque Eventos del sistema y Preferencias del sistema.