Tengo un pequeño código de Apple que escribí que presiona un par de botones de la ventana en la pantalla para mí. Al usarlo, aparece un mensaje emergente que dice que debo otorgar permisos en 'Seguridad & Privacidad - > Accesibilidad'. La casilla de verificación para habilitar permisos no funciona; no está en gris, simplemente no toma.
EntiendoqueTCC.dbeslaimplementaciónsubyacentedelospermisosdeAccesibilidad.Asíescomosevelatablade"acceso" inmediatamente después de intentar iniciar la aplicación:
$ sudo sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db" 'select * from access'
kTCCServiceAccessibility|com.company.applet|0|0|1||
Así es como se ve la tabla después de que trato de hacer clic en la casilla de verificación para habilitar los permisos:
$ sudo sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db" 'select * from access'
kTCCServiceAccessibility|com.company.applet|0|0|1||
kTCCServiceAccessibility|/Users/luser/Applications/applet.app|1|1|1||
A partir de esto, mi teoría es que el mecanismo de permiso de accesibilidad está viendo la aplicación como dos nombres diferentes: com.company.applet vs install path. Pero no sé lo suficiente sobre macOS para continuar con la resolución de problemas. ¿Alguien puede ayudarme a entender lo que está pasando? ¿Alguien tiene ideas sobre cómo hacer que esto funcione?
¡Gracias!
Detalles adicionales:
Mi proceso de compilación consiste en introducir mi applecript en osacompile, que genera el paquete ~ / Applications / applet.app. Luego, manualmente, agrego CFBundleIdentifier con /usr/libexec/PlistBuddy -c 'Add :CFBundleIdentifier string "com.company.applet"' ~/Applications/applet.app/Contents/Info.plist
. Si omito la actualización plist CFBundleIdentifier, la aplicación aún no pasa la verificación de accesibilidad.
Puedo crear el paquete en Script Editor y todo funciona. Sin embargo, esta no es una solución deseable a largo plazo; Como quiero mantener todo en control de versiones. Los artefactos generados desde el Editor de secuencias de comandos son binarios y, por lo tanto, no son adecuados para git.
Finalmente, parece que en versiones anteriores de macOS, podría haber modificado TCC.db directamente, pero ahora todas mis escrituras fallan. En otros lugares, he visto esto atribuido a SIP. No quiero deshabilitar SIP.