2010-07-16 2 views
1

파일을 전달할 수있는 유닉스 도구가 있고 파일 아이콘이 어디서 왔는지 알려주시겠습니까? 내가 무엇을 찾고아이콘의 출처는 어디입니까?

이 같은 것입니다 :

$ WhoProvidedIcon /Path/To/file.myex

UTI : com.myapplication.document

PLIST :/경로 /로/myapplication.app/Contents/Info.plist

ICON : /path/to/myapplication.app/Contents/Resources/BaseDoc.icns

+0

필자가 필요로하는 이유는 디버깅 목적입니다. 할당되어서는 안되는 파일에 아이콘이 지정되고 있으며 아이콘이 정확히 어디에서 오는지 알면 도움이됩니다. – ericg

+0

다음 코드를 사용하여 답변의 일부를 얻을 수 있습니다. NSString * uti = [ws typeOfFile : @ "/ Users/egorr/Desktop/file.vwx"오류 : & error]; \t NSLog (@ "UTI : % @", uti); 아직도 확실하지 않은 것은 파일 아이콘의 경로를 얻는 방법입니다. – ericg

+0

실제로 무엇을하려고합니까? 충돌하는 아이콘 또는 다양한 확장자의 파일이있는 _A_ 파일이 있습니까? 문서는 Finder.app에 의해 할당 된 아이콘을 시스템에 설치된 응용 프로그램에서 수집 한 정보 및 아이콘을 바탕으로 가져옵니다. 목표가 모든 VectorWorks 파일을 변경하는 것이라면 모두 모으는 코드를 작성해야합니다.vwx 파일을 복사 한 다음 모든 파일에'setIcon : forFile : options :'을 사용하면 다른 응용 프로그램의 내용을 변경하는 코드가 약간 생기게됩니다. – theMikeSwan

답변

1

OS가 아이콘을 제공하는 장소가 최소한 세 곳 있습니다.

한 상황에서

, NSWorkspace는 위치를 식별하는 데 도움이 될 수 있습니다 :이 꽤 아이콘의 경로를받지 않습니다

 
NSString* uti = [ws typeOfFile:@"/Users/egorr/Desktop/file.vwx" error:&error]; 
NSLog(@"UTI: %@", uti); 
NSLog(@"UTI localized description: %@", [ws localizedDescriptionForType:uti]); 
NSLog(@"UTI error description: %@",[error localizedDescription]); 
NSURL* utiDeclarationURL = (NSURL*)UTTypeCopyDeclaringBundleURL((CFStringRef)uti); 
NSLog(@"UTI declaration URL: %@", utiDeclarationURL); 
NSDictionary* utiDeclaration = (NSDictionary*)UTTypeCopyDeclaration((CFStringRef)uti); 
NSLog(@"UTI declaration: %@", utiDeclaration); 

을하지만, 선언가 함께있는 응용 프로그램 하나를 얻을 것이다 UTI.

아이콘이 Quick Look 플러그인에서 제공 될 수도 있으며 qlmanage의 출력을 사용하여 이러한 경우인지를 판별 할 수 있습니다.

사용자는 Finder의 정보 입수 창에서 주어진 "유형"의 모든 파일에 대해 선호하는 응용 프로그램을 설정할 수 있습니다. 예를 들어 TextMate에서 항상 열려있는 텍스트 파일 유형을 설정할 수 있습니다. TextMate는 저장 가능한 모든 파일 유형에 대한 사용자 정의 파일 아이콘을 제공합니다. Finder의 get 정보 창에서이 변경을 수행하면 해당 유형의 모든 파일에 TextMate에서 제공하고 UTI로 등록 된 아이콘이 표시됩니다. 이 경우인지 확인하려면 실행 서비스 데이터베이스를 살펴볼 필요가 있습니다. lsregister -dump

2

아이콘 맥 OSX A의 대부분의 응용 프로그램 앱 번들 자체에 저장됩니다. .app에서 마우스 오른쪽 버튼을 클릭 한 다음 Show Package Contents을 선택한 다음 Contents -> Resources으로 이동하면 거기에 아이콘이 표시됩니다.

+0

고마워요,하지만 충분히 명확하지 않았습니다. 내 질문을 편집했습니다. – ericg

0

이 정보를 제공하는 특정 도구를 알고 싶지는 않습니다. 그러나 중복 된 확장이있는 것 같습니다. Finder.app에서 파일 아이콘을 표시하는 경우 파일 정보 창을보고 나열된 응용 프로그램이 기본적으로 문서를 열 수 있는지 확인해야합니다. 그런 다음 해당 응용 프로그램의 .plist 파일을보고 확장 프로그램을 사용 중인지 확인합니다. 정보 창은 아이콘을 제공하는 응용 프로그램이 삭제되었거나 기본 응용 프로그램으로 나열되지 않은 경우 유용 할 수있는 문서의 종류를 말합니다.

+0

그렇게 간단하지 않습니다. 동일한 응용 프로그램의 여러 버전이 있으며 모두 동일한 확장명을 사용합니다. 그것들 중 하나가 손상되었을 가능성이 있지만, 파인더가 어느 것이 실제로 해당되는지 말해 줄 것이라고는 생각하지 않습니다. 그러므로, 도구가 파인더가 실제로 파일 아이콘을 얻은 위치에서 알려주는 잠재적 인 필요성. – ericg

관련 문제