Obecnie pracuję nad automatyczną instalacją Mavericks 10.9. Mam skonfigurowany NetBoot. Wszystko działa OK, dopóki nie chcę uruchomić Applescript. Od czasu wydania nowej wersji muszę ręcznie włączyć te skrypty. Czy istnieje polecenie, którego można użyć w skrypcie powłoki, aby dodać aplikację do listy urządzeń pomocniczych? A może jest jakiś edytor, który należy edytować, aby działał?
terminal
mavericks
applescript
plist
automation
Karol Berliński
źródło
źródło
Odpowiedzi:
Ustawienia są przechowywane w
/Library/Application Support/com.apple.TCC/TCC.db
:Podany schemat
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db '.schema access'
to:Na mojej instalacji ostatnie cztery kolumny (
client_type
,allowed
,prompt_count
, icsreq
) są0|1|0|\xfa\xde\x0c
do zastosowań, które zostały dodane po"example.app" would like to control this computer using accessibility features
dialogowe został pokazany i0|1|1|
dla aplikacji, które dodałem, upuszczając je do listy w oknie Preferencje systemowe.~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
zawiera listę aplikacji, dla których pokazano ostrzeżenie:Nie mogłem jednak wymyślić, jak faktycznie zezwolić na dostęp do urządzeń pomocniczych dla aplikacji. Próbowałem na przykład uruchomić następujące polecenia:
Próbowałem również uruchomić ponownie, aby zastosować zmiany i ustawić ostatnie cztery kolumny na
0,1,1,""
.źródło
sudo sqlite3 ...
.~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
nie bierze udziału w przyznawaniu uprawnień, rejestruje tylko, czy ostrzeżenie zostało wyświetlone, aby uniknąć irytujących użytkowników powtarzającymi się ostrzeżeniami.??
(\xfa\xde\x0c
) pochodzi zcsreq
kolumny zawierającej odcisk palca określonej aplikacji; OSX zarządza tym automatycznie za kulisami - nie trzeba go nigdy określać. Rzeczywista wartość jest znacznie dłuższa; obcięcie do 3 bajtów pochodzi z próby wyprowadzenia wartości binarnej (typu danychBLOB
) tak, jakby był łańcuchem, powodując zatrzymanie wyjścia na pierwszym bajcie NUL (?
rdzeń z\xfa
i\xde
nie jest prawidłowymi znakami w kodowaniu UTF8,\x0c
jest pionowy zakładka, która skutecznie tworzy podział linii).csreq
Kolumna zawiera skompilowane wyznaczone wymagania dla aplikacji, zobacz goo.gl/z10vl i TN2206 Apple podpisywania kodu w głąb przewodnika. Wyznaczone wymagania są zasadniczo skryptem, który sprawdza tożsamość aplikacji poprzez sprawdzenie identyfikatora pakietu i certyfikatów.Możesz także dodać plik, wykonując poniższe polecenia.
To polecenie znajdzie identyfikator pakietu dla aplikacji, którą próbujesz dodać do urządzeń pomocniczych.
Załóżmy, że aplikacja, którą próbujesz dodać, to SKYPE. Następnie wprowadź to poniżej:
Twój identyfikator pakietu to:
Następnie użyj tego wyniku w poniższym poleceniu:
W przypadku Skype wyglądałoby to tak:
Aby usunąć aplikację, użyj
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "delete from access where client='com.skype.skype';"
źródło
REPLACE INTO
zamiastINSERT INTO
, aby upewnić się, że polecenie działa, nawet jeśli baza danych ma już wpis dla określonej aplikacji.REPLACE INTO
to alias dla bardziej opisowegoINSERT OR REPLACE INTO
).