Saat ini saya sedang mengerjakan instalasi otomatis Mavericks 10.9. Saya sudah mengatur NetBoot. Semuanya berfungsi OK sampai saya ingin menjalankan Applescript. Sejak rilis versi baru saya perlu mengaktifkan skrip-skrip tersebut secara manual. Apakah ada perintah yang dapat saya gunakan dalam skrip shell untuk menambahkan aplikasi ke daftar Perangkat Bantu? Atau mungkin ada beberapa plist yang harus diedit agar bisa berfungsi?
terminal
mavericks
applescript
plist
automation
KarolBerlinski
sumber
sumber
Jawaban:
Pengaturan disimpan di
/Library/Application Support/com.apple.TCC/TCC.db
:Skema, seperti yang diberikan oleh
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db '.schema access'
, adalah:Pada instalasi saya empat kolom terakhir (
client_type
,allowed
,prompt_count
, dancsreq
) adalah0|1|0|\xfa\xde\x0c
untuk aplikasi yang ditambahkan setelah"example.app" would like to control this computer using accessibility features
dialog ditunjukkan dan0|1|1|
untuk aplikasi yang saya menambahkan dengan menjatuhkan mereka ke daftar di System Preferences.~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
berisi daftar aplikasi yang diperlihatkan dialog peringatan:Saya tidak tahu bagaimana sebenarnya memungkinkan akses untuk perangkat bantu untuk suatu aplikasi. Saya mencoba misalnya menjalankan perintah ini:
Saya juga mencoba memulai kembali untuk menerapkan perubahan dan mengatur empat kolom terakhir
0,1,1,""
.sumber
sudo sqlite3 ...
.~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
tidak terlibat dalam pemberian izin, hanya mencatat apakah peringatan telah ditampilkan untuk menghindari pengguna yang mengganggu dengan peringatan berulang.??
(\xfa\xde\x0c
) berasal daricsreq
kolom, yang berisi sidik jari dari jenis aplikasi yang ditentukan; OSX mengelola secara otomatis di belakang layar - tidak perlu menentukannya. Nilai sebenarnya jauh lebih lama; pemotongan ke 3 byte berasal dari mencoba menampilkan nilai biner (tipe dataBLOB
) seolah-olah itu adalah string, menyebabkan output berhenti pada byte NUL pertama (?
batang dari\xfa
dan\xde
bukan karakter yang valid dalam pengkodean UTF8,\x0c
adalah vertikal tab yang secara efektif membuat jeda baris).csreq
kolom berisi persyaratan ditunjuk dikompilasi untuk aplikasi, lihat goo.gl/z10vl dan Apple TN2206 Kode Penandatanganan di Kedalaman panduan. Persyaratan yang ditunjuk pada dasarnya adalah naskah yang memvalidasi identitas aplikasi dengan memeriksa bundel ID dan sertifikat.Anda juga dapat menambahkan file dengan mengikuti perintah di bawah ini.
Perintah ini akan menemukan Bundle Identifier untuk aplikasi yang Anda coba tambahkan ke Perangkat Bantu.
Katakanlah aplikasi yang ingin Anda tambahkan adalah SKYPE. Anda kemudian akan memasukkan ini di bawah:
Dan pengidentifikasi bundel Anda adalah:
Anda kemudian menggunakan output ini dalam perintah di bawah ini:
Untuk Skype akan terlihat seperti ini:
Untuk menghapus aplikasi, Anda akan menggunakan
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "delete from access where client='com.skype.skype';"
sumber
REPLACE INTO
daripadaINSERT INTO
memastikan bahwa perintah itu berfungsi bahkan jika database sudah memiliki entri untuk aplikasi yang ditentukan.REPLACE INTO
merupakan alias untuk yang lebih deskriptifINSERT OR REPLACE INTO
).