Actualmente estoy trabajando en la instalación automatizada de Mavericks 10.9. Tengo configurado NetBoot. Todo funciona bien hasta que quiera ejecutar Applescript. Desde el lanzamiento de la nueva versión, necesito habilitar manualmente esos scripts. ¿Hay algún comando que pueda usar en el script de shell para agregar una aplicación a la lista de dispositivos de asistencia? ¿O tal vez hay algún plist que tiene que ser editado para que funcione?
terminal
mavericks
applescript
plist
automation
KarolBerlinski
fuente
fuente
Respuestas:
La configuración se almacena en
/Library/Application Support/com.apple.TCC/TCC.db
:El esquema, según lo dado por
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db '.schema access'
, es:En mi instalación de las últimas cuatro columnas (
client_type
,allowed
,prompt_count
, ycsreq
) son0|1|0|\xfa\xde\x0c
las aplicaciones que se agregaron después de la"example.app" would like to control this computer using accessibility features
se muestra el diálogo y0|1|1|
para aplicaciones que gota a gota a la lista de preferencias del sistema.~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
contiene una lista de aplicaciones para las cuales se ha mostrado el cuadro de diálogo de advertencia:Sin embargo, no pude encontrar la forma de permitir el acceso a dispositivos de asistencia para una aplicación. Intenté, por ejemplo, ejecutar estos comandos:
También intenté reiniciar para aplicar los cambios y configurar las últimas cuatro columnas
0,1,1,""
.fuente
sudo sqlite3 ...
.~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
no está involucrado en la concesión de permisos, solo registra si se ha mostrado una advertencia para evitar molestar a los usuarios con advertencias repetidas.??
(\xfa\xde\x0c
) proviene de lacsreq
columna, que contiene una especie de huella digital de la aplicación especificada; OSX lo gestiona automáticamente detrás de escena, sin necesidad de especificarlo. El valor real es mucho más largo; el truncamiento a 3 bytes viene de tratar de dar salida al valor binario (tipo de datosBLOB
) como si fuera una cadena, provocando la salida de parada en el primer byte NUL (el?
tallo de la\xfa
y\xde
no ser caracteres válidos en la codificación UTF8,\x0c
es una línea vertical pestaña que efectivamente crea un salto de línea).csreq
columna contiene los requisitos designados compilados para la aplicación, consulte goo.gl/z10vl y la guía de profundidad de firma de código TN2206 de Apple . Los requisitos designados son esencialmente un script que valida la identidad de una aplicación al verificar la identificación del paquete y los certificados.También puede agregar el archivo siguiendo los comandos a continuación.
Este comando encontrará el Identificador de paquete para la aplicación que está intentando agregar a los Dispositivos de asistencia.
Digamos que la aplicación que intentaba agregar era SKYPE. Luego ingresaría esto a continuación:
Y su identificador de paquete sería:
Luego usa esta salida en el siguiente comando:
Para Skype se vería así:
Para eliminar la aplicación, usaría el
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "delete from access where client='com.skype.skype';"
fuente
REPLACE INTO
lugar deINSERT INTO
asegurar que el comando funcione incluso si la base de datos ya tiene una entrada para la aplicación especificada.REPLACE INTO
es un alias para el más descriptivoINSERT OR REPLACE INTO
).