В настоящее время я работаю над автоматической установкой Mavericks 10.9. У меня настроен NetBoot. Все работает хорошо, пока я не хочу выполнить Applescript. С момента выхода новой версии мне нужно вручную включить эти скрипты. Есть ли команда, которую я могу использовать в сценарии оболочки, чтобы добавить приложение в список вспомогательных устройств? Или, может быть, есть какой-то лист, который нужно отредактировать, чтобы он работал?
terminal
mavericks
applescript
plist
automation
KarolBerlinski
источник
источник
Ответы:
Настройки хранятся в
/Library/Application Support/com.apple.TCC/TCC.db
:Схема, как указано в
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db '.schema access'
:На моей установке последние четыре колонок (
client_type
,allowed
,prompt_count
иcsreq
) являются0|1|0|\xfa\xde\x0c
для приложений , которые были добавлены после того , как"example.app" would like to control this computer using accessibility features
диалог был показан и0|1|1|
для приложений , которые я добавил, опуская их в список в System Preferences.~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
содержит список приложений, для которых было показано диалоговое окно предупреждения:Я не мог понять, как на самом деле разрешить доступ для вспомогательных устройств для приложения, хотя. Я попытался, например, запустить эти команды:
Я также попытался перезапустить, чтобы применить изменения и установить последние четыре столбца
0,1,1,""
.источник
sudo sqlite3 ...
.~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
не участвует в предоставлении разрешений, он только записывает, было ли показано предупреждение, чтобы избежать раздражающих пользователей повторными предупреждениями.??
(\xfa\xde\x0c
) вытекает изcsreq
столбца, который содержит отпечатки пальцев указанного приложения; OSX управляет этим автоматически за кулисами - нет необходимости когда-либо указывать это. Фактическая стоимость намного дольше; усечение до 3 байтов происходит из-за попытки вывести двоичное значение (тип данныхBLOB
), как если бы оно было строкой, в результате чего вывод останавливается на первом байте NUL (?
основание\xfa
и\xde
недопустимые символы в кодировке UTF8\x0c
являются вертикальными вкладка, которая эффективно создает разрыв строки).csreq
Столбец содержит скомпилированные назначенные требования для приложения, см goo.gl/z10vl и TN2206 компании Apple подписывания кода в глубины руководства. Назначенные требования - это, по сути, сценарий, который проверяет подлинность приложения путем проверки идентификатора пакета и сертификатов.Вы также можете добавить файл, следуя приведенным ниже командам.
Эта команда найдет идентификатор пакета для приложения, которое вы пытаетесь добавить к вспомогательным устройствам.
Допустим, приложение, которое вы пытались добавить, было SKYPE. Затем вы должны ввести это ниже:
И ваш идентификатор пакета будет:
Затем вы используете этот вывод в команде ниже:
Для скайпа это будет выглядеть так:
Чтобы удалить приложение, вы должны использовать
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "delete from access where client='com.skype.skype';"
источник
REPLACE INTO
вместо того,INSERT INTO
чтобы гарантировать, что команда работает, даже если в базе данных уже есть запись для указанного приложения.REPLACE INTO
это псевдоним для более описательнойINSERT OR REPLACE INTO
).