OS X : 새로 설치된 응용 프로그램에 대한 식별자 별 번들 위치

StackOverflow https://stackoverflow.com/questions/993244

  •  13-09-2019
  •  | 
  •  

문제

비슷한 질문 식별자에 의한 번들 찾기, 그러나 다른 문제 :

신분증으로 서로의 번들을 찾아야하는 몇 가지 응용 프로그램이 있습니다. 모든 응용 프로그램을 완전히 새로 설치하지 않는 한 항상 잘 작동합니다. 많은 경우에 번들 위치가 알려지기 위해 파인더를 설치 위치를 가리키는 것으로 충분하지만 때로는 충분하지 않습니다. 번들 ID가 경로를 찾는 데 사용하기 전에 먼저 응용 프로그램을 실행해야합니다. 응용 프로그램을 /애플리케이션 /에 복사하는 설치 프로그램을 사용하고 있으므로 앱을 설치할 때 파인더가 열리지 않습니다.

애플리케이션 번들이 새로 설치되면 일부 내부 레지스트리가 번들 ID를 번들 위치에 맵핑하는 내부 레지스트리가 업데이트되기까지 시스템이 시간이 걸립니다. 내가 알고 싶은 것은 다음과 같습니다.

  1. 이 매핑은 어디에 유지됩니까?
  2. System/File Manager/Workspace (?)가 맵을 업데이트하도록 강요하려면 어떻게해야합니까?
도움이 되었습니까?

해결책

매핑은 런칭 서비스 데이터베이스에서 유지됩니다. 나는 이것이 저장되는 곳에는 없지만 목표를 달성하는 더 나은 방법이 있기 때문에 정확한 위치는 관련이 없습니다.

여러 가지 방법으로 Launch Services 데이터베이스를 수동으로 업데이트 할 수 있지만 개인적으로는 특히 상황에서 프로그래밍 방식으로 수행하는 것이 더 쉬울 것이라고 생각합니다. 이 경우 런치 서비스 API를 활용합니다. 특히 사용을 살펴 보겠습니다. LSRegisterURL(), 그것은 당신이하고 싶은 일을 성취하는 것 같습니다.

살펴보십시오 서비스 문서를 시작합니다 데이터베이스에 응용 프로그램 등록에 대한 자세한 내용은 일반적으로 어떻게 작동하는지에 대한 자세한 내용을 보려면.

다른 팁

대안이 필요한 경우 대안은 Spotlight API를 사용하여 검색하는 것입니다. kMDItemCFBundleIdentifier 열쇠:

pierre$39> mdfind "kMDItemCFBundleIdentifier == 'org.videolan.vlc'"
/Applications/VLC.app
/Applications/vlc-0.8.6c/VLC.app

파일/폴더가 파일 시스템에 기록되는 즉시 파일/폴더가 색인화되도록 스포트라이트가 시스템과 밀접하게 통합되어 있지만 아직 색인이 인덱싱되지 않은 앱 문제가 없어야합니다. 물론, 당신은 둘 이상의 응답을 처리 할 준비가되어 있어야합니다…

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top