Ho un pezzetto di mela che ho scritto che preme per me un paio di pulsanti per la finestra sullo schermo. In uso, viene visualizzato un popup che dice che è necessario concedere le autorizzazioni in 'Sicurezza e amp; Privacy - > Accessibilità'. La casella di controllo per abilitare le autorizzazioni non funziona; non è disattivato, semplicemente non ci vuole.
LamiacomprensioneècheilTCC.dbèl'implementazionesottostantedelleautorizzazionidiaccessibilità.Eccocomeapparelatabella"accesso" subito dopo aver tentato di avviare l'app:
$ sudo sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db" 'select * from access'
kTCCServiceAccessibility|com.company.applet|0|0|1||
Ecco come appare la tabella dopo che provo a fare clic sulla casella di controllo per abilitare le autorizzazioni:
$ 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||
Da ciò, la mia teoria è che il meccanismo di autorizzazione all'accessibilità sta vedendo l'app come due nomi diversi: com.company.applet vs percorso di installazione. Ma non so abbastanza su macOS per procedere con la risoluzione dei problemi. Qualcuno può aiutarmi a capire cosa sta succedendo? Qualcuno ha idee su come farlo funzionare?
Grazie!
Ulteriori dettagli:
Il mio processo di compilazione è di alimentare il mio applescript in osacompile, che genera il pacchetto ~ / Applications / applet.app. Quindi aggiungo manualmente CFBundleIdentifier con /usr/libexec/PlistBuddy -c 'Add :CFBundleIdentifier string "com.company.applet"' ~/Applications/applet.app/Contents/Info.plist
. Se ignoro l'aggiornamento di CFBundleIdentifier, l'applicazione continua a non avere il controllo dell'accessibilità.
Posso creare il bundle in Script Editor e tutto funziona. Tuttavia, questa non è una soluzione desiderabile a lungo termine; come voglio mantenere tutto nel controllo della versione. Gli artefatti generati da Script Editor sono binari e quindi non adatti per git.
Infine, sembra che nelle versioni precedenti di macOS, avrei potuto modificare direttamente il TCC.db, ma ora tutte le mie scritture falliscono - altrove, ho visto questo attribuito a SIP. Non voglio disabilitare SIP.