¿Permitir que la aplicación controle la computadora (dispositivos de asistencia) en Mavericks a través de la Terminal?

8

Actualmente estoy trabajando en la instalación automatizada de Mavericks 10.9. Tengo NetBoot configurado. Todo funciona bien hasta que quiero 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 error que debe ser editado para que funcione?

    
pregunta KarolBerlinski 26.11.2013 - 15:41

2 respuestas

8

La configuración se almacena en /Library/Application Support/com.apple.TCC/TCC.db :

$ sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db 'select * from access'
kTCCServiceAccessibility|com.apple.ScriptEditor2|0|1|0|��

kTCCServiceAccessibility|com.red-sweater.FastScripts|0|1|0|��

kTCCServiceAccessibility|com.apple.AccessibilityInspector|0|1|0|��

kTCCServiceAccessibility|com.slate.Slate|0|1|0|��

kTCCServiceAccessibility|com.apple.Automator|0|1|1|
kTCCServiceAccessibility|com.googlecode.iterm2|0|1|1|

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db '.schema access' imprime CREATE TABLE access (service TEXT NOT NULL, client TEXT NOT NULL, client_type INTEGER NOT NULL, allowed INTEGER NOT NULL, prompt_count INTEGER NOT NULL, csreq BLOB, CONSTRAINT key PRIMARY KEY (service, client, client_type)); .

En mi instalación, las últimas cuatro columnas ( client_type , allowed , prompt_count y csreq ) son 0|1|0|\xfa\xde\x0c para las aplicaciones que se agregaron después del cuadro de diálogo "example.app" would like to control this computer using accessibility features y 0|1|1| para aplicaciones que agregué al colocarlas en la lista en Preferencias del sistema.

~/Library/Preferences/com.apple.universalaccessAuthWarning.plist contiene una lista de aplicaciones para las que se ha mostrado el diálogo de advertencia:

$ defaults read com.apple.universalaccessAuthWarning
{
    "/Applications/Automator.app" = 1;
    "/Applications/Automator.app/Contents/MacOS/Automator" = 1;
    "/Applications/FastScripts.app" = 1;
    "/Applications/FastScripts.app/Contents/MacOS/FastScripts" = 1;
    "/Applications/Slate.app" = 1;
    "/Applications/Slate.app/Contents/MacOS/Slate" = 1;
    "/Applications/Utilities/AppleScript Editor.app" = 1;
    "/Applications/Utilities/AppleScript Editor.app/Contents/MacOS/AppleScript Editor" = 1;
    "/Applications/Xcode.app/Contents/Applications/Accessibility Inspector.app" = 1;
    "/Applications/Xcode.app/Contents/Applications/Accessibility Inspector.app/Contents/MacOS/Accessibility Inspector" = 1;
    "/Applications/iTerm.app" = 1;
    "/Applications/iTerm.app/Contents/MacOS/iTerm" = 1;
    "/Users/lauri/Desktop/aa.app" = 1;
    "/Users/lauri/Desktop/aa.app/Contents/MacOS/applet" = 1;
    "com.apple.AccessibilityInspector" = 1;
    "com.apple.Automator" = 1;
    "com.apple.ScriptEditor.id.aa" = 1;
    "com.apple.ScriptEditor2" = 1;
    "com.red-sweater.FastScripts" = 1;
    "com.slate.Slate" = 1;
}    

Sin embargo, no pude descubrir cómo permitir el acceso a dispositivos de asistencia para una aplicación. Intenté, por ejemplo, ejecutar estos comandos:

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db 'insert into access values ("kTCCServiceAccessibility","com.apple.ScriptEditor.id.qq",0,1,0,"'$'\xfa\xde\x0c''");'
defaults write com.apple.universalaccessAuthWarning com.apple.ScriptEditor.id.qq -bool true
defaults write com.apple.universalaccessAuthWarning /Users/lauri/Desktop/qq.app -bool true
defaults write com.apple.universalaccessAuthWarning /Users/lauri/Desktop/qq.app/Contents/MacOS/applet -bool true
sudo killall tccd

También intenté reiniciar para aplicar los cambios y establecer las últimas cuatro columnas en 0,1,1,"" .

    
respondido por el user495470 27.11.2013 - 16:30
6

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.

/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/enterapplicaitonnamehere.app/Contents/Info.plist

Digamos que la aplicación que intentabas agregar era SKYPE. Luego ingresará esto a continuación:

/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/Skype.app/Contents/Info.plist

Y su identificador de paquete sería:

com.skype.skype

A continuación, utiliza esta salida en el siguiente comando:

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "REPLACE INTO access VALUES('kTCCServiceAccessibility','',0,1,1,NULL);" 

Para Skype se vería así:

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "REPLACE INTO access VALUES('kTCCServiceAccessibility','com.skype.skype',0,1,1,NULL);" 

Para eliminar la aplicación, utilizarías sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "delete from access where client='com.skype.skype';"

    
respondido por el AbsterT 26.02.2014 - 19:49

Lea otras preguntas en las etiquetas