Je travaille actuellement sur l'installation automatique de Mavericks 10.9. J'ai configuré NetBoot. Tout fonctionne bien jusqu'à ce que je veuille exécuter Applescript. Depuis la sortie de la nouvelle version, je dois activer manuellement ces scripts. Existe-t-il une commande que je peux utiliser dans le shell scripts pour ajouter l'app à la liste Assistive Devices ? Ou peut-être qu'il y a un plist qui doit être édité pour que cela fonctionne ?
Réponses
Trop de publicités?Les paramètres sont enregistrés dans /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|
Le schéma, tel que donné par sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db '.schema access'
c'est :
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));
Sur mon installation, les quatre dernières colonnes ( client_type
, allowed
, prompt_count
et csreq
) sont 0|1|0|\xfa\xde\x0c
pour les applications qui ont été ajoutées après la "example.app" would like to control this computer using accessibility features
s'est affiché et 0|1|1|
pour les applications que j'ai ajoutées en les déposant dans la liste des Préférences Système.
~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
contient une liste d'applications pour lesquelles la boîte de dialogue d'avertissement a été affichée :
$ 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;
}
Je n'ai pas réussi à comprendre comment autoriser l'accès aux appareils fonctionnels pour une application. J'ai essayé par exemple d'exécuter ces commandes :
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
J'ai également essayé de redémarrer pour appliquer les changements et de définir les quatre dernières colonnes comme suit 0,1,1,""
.
Vous pouvez également ajouter le fichier en suivant les commandes ci-dessous.
Cette commande trouvera l'identifiant de l'application que vous essayez d'ajouter à Assistive Devices.
/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/enterapplicaitonnamehere.app/Contents/Info.plist
Disons que l'application que vous essayez d'ajouter est SKYPE. Vous devriez alors entrer ceci ci-dessous :
/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/Skype.app/Contents/Info.plist
Et votre identifiant de liasse serait :
com.skype.skype
Vous utilisez ensuite cette sortie dans la commande ci-dessous :
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "REPLACE INTO access VALUES('kTCCServiceAccessibility','',0,1,1,NULL);"
Pour Skype, cela ressemblerait à ceci :
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "REPLACE INTO access VALUES('kTCCServiceAccessibility','com.skype.skype',0,1,1,NULL);"
Pour supprimer l'application, vous devez utiliser la commande sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "delete from access where client='com.skype.skype';"