화면에 몇 개의 창 버튼을 누르는 약간의 애플 스크립트가 있습니다. 사용 중에 '보안 및 개인 정보-> 접근성'에서 권한을 부여해야한다는 팝업이 표시됩니다. 권한을 활성화하는 확인란이 작동하지 않습니다. 회색으로 표시되지 않고 걸리지 않습니다.
TCC.db는 내게 필요한 옵션 권한의 기본 구현이라는 것을 이해하고 있습니다. 다음은 앱을 실행하려고 시도한 직후 '액세스'테이블의 모습입니다.
$ sudo sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db" 'select * from access'
kTCCServiceAccessibility|com.company.applet|0|0|1||
권한을 활성화하기 위해 확인란을 클릭 한 후 표는 다음과 같습니다.
$ 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||
이것으로부터, 나의 이론은 접근성 권한 메커니즘이 앱을 com.company.applet와 설치 경로라는 두 개의 다른 이름으로보고 있다는 것입니다. 그러나 문제를 해결하기 위해 macOS에 대해 충분히 알지 못합니다. 아무도 무슨 일이 일어나고 있는지 이해할 수 있습니까? 이 작업을 수행하는 방법에 대한 아이디어가 있습니까?
감사!
추가 세부 사항:
내 빌드 프로세스는 애플 스크립트를 osacompile에 공급하여 ~ / Applications / applet.app 번들을 생성합니다. 그런 다음으로 CFBundleIdentifier를 수동으로 추가 /usr/libexec/PlistBuddy -c 'Add :CFBundleIdentifier string "com.company.applet"' ~/Applications/applet.app/Contents/Info.plist
합니다. plist CFBundleIdentifier 업데이트를 생략해도 응용 프로그램은 여전히 접근성 검사에 실패합니다.
스크립트 편집기에서 번들을 빌드 할 수 있으며 모든 것이 작동합니다. 그러나 이것은 바람직한 장기 해결책이 아닙니다. 모든 것을 버전 관리로 유지하고 싶습니다. 스크립트 편집기에서 생성 된 아티팩트는 바이너리이므로 git에 적합하지 않습니다.
마지막으로, 이전 버전의 macOS와 같이 TCC.db를 직접 수정할 수 있었지만 이제는 모든 쓰기 작업이 실패합니다. SIP를 비활성화하고 싶지 않습니다.
defaults read
도메인별로 응용 프로그램을 찾지 못하면 (예 : com.company.applet) 주석이 제한됩니다. 따라서 많은 편집.
defaults
작성하는 데 사용하면 차이 가CFBundleIdentifier
있습니까? 또한 테스트와 마찬가지로 원하는 방식으로 앱을 만든 후 스크립트 편집기에서 앱을 열면 컴파일 및 저장을 누른 다음 시스템 환경 설정> 보안 및 개인 정보> 개인 정보> 접근성에 추가하기 전에 닫습니다. 그런 다음 문제없이 확인할 수 있습니까?