Atualmente, estou trabalhando na instalação automatizada do Mavericks 10.9. Eu tenho o NetBoot configurado. Tudo funciona bem até que eu queira executar o Applescript. Desde o lançamento da nova versão, preciso ativar manualmente esses scripts. Existe um comando que eu possa usar no shell script para adicionar um aplicativo à lista de Dispositivos Assistivos? Ou talvez haja alguma lista que precise ser editada para que funcione?
terminal
mavericks
applescript
plist
automation
KarolBerlinski
fonte
fonte
Respostas:
As configurações são armazenadas em
/Library/Application Support/com.apple.TCC/TCC.db
:O esquema, dado por
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db '.schema access'
, é:Na minha instalação, as últimas quatro colunas (
client_type
,allowed
,prompt_count
ecsreq
) são0|1|0|\xfa\xde\x0c
para aplicações que foram adicionadas após o"example.app" would like to control this computer using accessibility features
diálogo foi mostrado e0|1|1|
para aplicações que eu adicionei, largando-os à lista em Preferências do Sistema.~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
contém uma lista de aplicativos para os quais a caixa de diálogo de aviso foi mostrada:Porém, não consegui descobrir como realmente permitir o acesso a dispositivos auxiliares para um aplicativo. Eu tentei, por exemplo, executando estes comandos:
Também tentei reiniciar para aplicar as alterações e definir as últimas quatro colunas
0,1,1,""
.fonte
sudo sqlite3 ...
.~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
não está envolvido na concessão de permissões, ele registra apenas se um aviso foi mostrado para evitar irritar os usuários com avisos repetidos.??
(\xfa\xde\x0c
) deriva dacsreq
coluna, que contém uma impressão digital dos tipos do aplicativo especificado; O OSX gerencia isso automaticamente nos bastidores - não há necessidade de especificá-lo. O valor real é muito mais longo; o truncamento de 3 bytes vem de tentar transmitir o valor binário (tipo de dadosBLOB
) como se fosse uma cadeia, fazendo com que a saída de paragem no primeiro byte NUL (a?
haste da\xfa
e\xde
não sendo válido caracteres em codificação UTF-8,\x0c
é um verticais guia que efetivamente cria uma quebra de linha).csreq
coluna contém os requisitos designados compilados para o aplicativo, consulte goo.gl/z10vl e o guia TN2206 Code Signing in Depth da Apple . Os requisitos designados são essencialmente um script que valida a identidade de um aplicativo, verificando o ID do pacote e os certificados.Você também pode adicionar o arquivo seguindo os comandos abaixo.
Este comando encontrará o Identificador de pacote para o aplicativo que você está tentando adicionar aos dispositivos de assistência.
Digamos que o aplicativo que você estava tentando adicionar fosse SKYPE. Você digitaria isso abaixo:
E o seu identificador de pacote seria:
Você usa essa saída no comando abaixo:
Para o Skype, seria assim:
Para remover o aplicativo, você usaria o
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "delete from access where client='com.skype.skype';"
fonte
REPLACE INTO
vez deINSERT INTO
garantir que o comando funcione mesmo se o banco de dados já tiver uma entrada para o aplicativo especificado.REPLACE INTO
é um alias para os mais descritivosINSERT OR REPLACE INTO
).