OS X이 새로운 파일 확장자를 인식하도록하려면 어떻게해야합니까?


16

Finder.app Enter에서 현재 선택된 파일 또는 폴더의 이름을 편집 할 수 있습니다 .

OS X은 확장자가 아닌 파일 이름 부분 만 자동으로 선택합니다.

실수로 파일 확장명을 변경하지 않아도 새 이름을 입력 할 수 있으므로 매우 유용합니다.

그러나 이것은 "알려진"파일 형식에서만 작동하는 것 같습니다. 알 수없는 확장자로 시도하면 확장자를 포함한 전체 파일 이름이 선택됩니다.

+ → "모두 변경"을 .bar통해 모든 파일을 열 수있는 응용 프로그램을 매핑하려고 했지만 여전히 위에서 설명한 동작이 나타납니다.I

"알려진"파일 형식 목록은 어디에 저장됩니까? OS X이 새로운 파일 형식을 인식하도록하는 방법이 있습니까?

답변:


7

수퍼 유저 게시물 은 저에게 효과적 이었습니다.

이러한 파일을 여는 데 사용하려는 애플리케이션을 찾아 번들을 편집해야합니다. 애플리케이션을 마우스 오른쪽 단추로 클릭하여 이러한 파일 확장자를 처리하고 패키지 컨텐츠 표시를 선택하십시오 . 로 이동하여 Contents편집하십시오 Info.plist. Apple 개발자 도구의 일부인 속성 목록 편집기 가 필요할 수 있습니다 . 운이 좋으면 XML 형식입니다. 이 파일을 편집 CFBundleDocumentTypes하고 원하는 확장명에 대한 항목을 추가하십시오.

TextEdit을 기본 응용 프로그램으로 사용하여 .bar파일 을 열었습니다 . 내가 다르게 한 것은 TextEdit에 들어간 XML을 다음과 같이 변경하는 것이 었 Info.plist습니다.

    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>bar</string>
        </array>
        <key>CFBundleTypeIconFile</key>
        <string>BarDocument</string>
        <key>CFBundleTypeName</key>
        <string>Bar Document</string>
        <key>CFBundleTypeRole</key>
        <string>Document</string>
    </dict>

… 그리고 LSRefresh.app 를 사용 하여 시작 서비스 데이터베이스에서 TextEdit를 새로 고 칩니다 . 그러면 Lion에서 Textedit (및 기타 서명 된 응용 프로그램)의 코드 서명이 손상 될 수 있지만 제안한대로 작동했습니다.


1
CFBundleTypeExtensionsOS X 10.5에서는 더 이상 사용되지 않는 레거시 키입니다 . 2007 년 이후 선호되는 방법은 여기에 언급 되고 제 답변에 설명 된 대로 새로운 UTI를 선언하는 입니다.
TachyonVortex

5
죄송합니다.이 조언은 좋지 않기 때문에이를 하향 조정해야합니다. 앱 번들을 조작하는 것은 현명하지 않을뿐만 아니라 (기괴한 부작용의 위험이 발생하거나 더 악화 될 수도 있음) 앱의 복사본을 완전히 손상시킬 수 있습니다. 이 프로세스는 코드 서명을 무효화하지만 샌드 박싱 (10.7+)을 지원하는 macOS 버전 에서는 유효하지 않은 서명이있는 샌드 박스 앱을 시작하거나 사용할 수 없음
Bob

1
@ binarybob, 내가 이해하지 못하는 것은 파일을 마우스 오른쪽 버튼으로 클릭 xxx.bar하고 선택 하지 않는 이유는 무엇입니까 open with?
Pacerier

@Bob, 앱 스탠드 박스 란 무엇인가요?
Pacerier

@Pacerier App 샌드 박싱은 시스템과 서로의 응용 프로그램을 완전히 분리하는 macOS의 보안 기능으로, 특히 응용 프로그램 에서 허용되는 작업 을 자세히 설명하는 "권한"목록이 매우 짧습니다 . 해당 자격 목록은 코드 서명에 포함되어 있으며 앱이 실행될 때마다 유효성이 검사되므로 우연히 또는 공격으로 앱의 기능을 조작 할 수 없습니다. 기술적 인 설명 은 이 문서 를 참조하십시오 .
Bob

26

UTI 및 출시 서비스

"알려진"파일 형식 목록은 어디에 저장됩니까?

"파일 유형"의 공식 용어는 UTI ( Uniform Type Identifiers )이며 UTI 데이터베이스는 Launch Services에서 유지 보수 합니다 .

터미널을 사용하면 다음 lsregister위치에 저장된 도구를 사용하여 Launch Services 데이터베이스의 내용을 볼 수 있습니다 .

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister

실행할 때마다 긴 경로를 지정하는 대신 lsregister임시로 디렉토리를 다음에 추가 할 수 있습니다 PATH.

PATH=/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support:"$PATH"

다음을 lsregister입력하여 실행할 수 있습니다 .

lsregister

Launch Services 데이터베이스의 내용을 보려면

lsregister -dump

새로운 UTI 선언

OS X이 새로운 파일 형식을 인식하도록하는 방법이 있습니까?

이 Apple 기사 "New Uniform Type Identifiers 선언" 은이를 수행하는 방법에 대한 유용한 정보를 제공합니다. 전체 과정은 다음과 같습니다.

1. 더미 응용 프로그램 만들기

Launch Services에 등록 할 더미 애플리케이션을 작성하십시오.

  • AppleScript 편집기를 엽니 다 (OS X의 유틸리티 폴더에 있음).
  • 파일 형식응용 프로그램으로 설정하여 비어있는 새 스크립트를 어딘가에 저장하십시오 (예 : 데스크탑) .

Info.plist 파일을 엽니 다

  • Finder에서 새로운 더미 응용 프로그램을 찾으십시오.
  • 마우스 오른쪽 버튼으로 클릭 하고 팝업 메뉴에서 패키지 내용보기를 선택하십시오 .
  • 오픈 컨텐츠 폴더에 있습니다.
  • 열기 의 Info.plist의 (: 예를 들어, 텍스트 편집기에서 파일을 텍스트 편집기 ).

3. 새로운 UTI 추가

두 가지 키 중에서 선택할 수 있습니다.

  • UTExportedTypeDeclarations – 사용자 정의 파일 이름 확장자입니다.
  • UTImportedTypeDeclarations – 이미 존재하지만 OS X에서 인식하지 못하는 파일 이름 확장자의 경우.

필요에 가장 적합한 키를 선택하십시오.

그런 다음 Info.plist 파일에서 마지막 두 줄 ( </dict></plist>) 전에이 코드를 추가하십시오.

<key>KEY</key>
<array>
    <dict>
        <key>UTTypeIdentifier</key>
        <string>IDENTIFIER</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>EXTENSION</string>
            </array>
        </dict>
    </dict>
</array>

다음과 같이 변경하십시오.

  • KEY선택한 키 ( UTExportedTypeDeclarations또는 UTImportedTypeDeclarations)로 교체하십시오 .
  • IDENTIFIER적합한 역방향 DNS 식별자로 교체하십시오 .
    • 수출 – 같은 것 com.mycompany.mytype
    • 가져 오기 – id SoftwareDoom WAD 형식의 경우 적절한 식별자는 다음과 같습니다.com.idsoftware.wad
  • 다음 EXTENSION과 같이 파일 이름 확장자 (앞의 점없이)로 바꾸십시오 wad.

Launch Services가 새 UTI를 수락하는 데 필요한 최소 코드입니다. 다음과 같은 선택적 속성을 추가 할 수도 있습니다.

  • UTTypeConformsTo – 아래 부록을 참조하십시오.
  • UTTypeDescription – 사용자가 볼 수있는 설명으로, Finder에 표시됩니다.
  • UTTypeIconFile– 더미 응용 프로그램 의 Contents / Resources 폴더에 Apple Icon Image 파일을 추가하고이 속성에 파일 이름을 추가하면 새 파일 이름 확장자를 가진 파일이이 아이콘을 사용합니다.
  • UTTypeReferenceURL –이 유형을 설명하는 참조 문서의 URL.

다음은 모든 선택적 속성을 보여주는 완전한 예입니다.

<key>UTImportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeIdentifier</key>
        <string>com.idsoftware.wad</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>wad</string>
            </array>
        </dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>Doom WAD file</string>
        <key>UTTypeIconFile</key>
        <string>DoomWAD.icns</string>
        <key>UTTypeReferenceURL</key>
        <string>http://en.wikipedia.org/wiki/Doom_WAD</string>
    </dict>
</array>

4. Launch Services에 새로운 UTI를 등록하십시오

터미널에서이 명령을 실행하십시오.

lsregister <PATH_TO_APP>

<PATH_TO_APP>더미 응용 프로그램의 경로로 대체 하십시오. 예 :

lsregister ~/Desktop/MyDummyApp.app

이제 새로운 파일 이름 확장자를 가진 파일을 만든 다음 EnterFinder에서 파일을 선택하고을 누르면 파인더가 확장자가 아닌 파일 이름 부분 만 자동으로 선택해야합니다.

Launch Services 데이터베이스의 내용을 보는 경우 :

lsregister -dump

새 UTI가 다음과 같이 나열되어 있어야합니다.

type    id:            50364
        bindableKey:   12608
        generation:    1
        uti:           com.idsoftware.wad
        description:   Doom WAD file
        flags:         imported  active  apple-internal  untrusted
        icon:          DoomWAD.icns
        conforms to:   public.data
        tags:          .wad

나중에 새 UTI를 등록 취소하려면 -u옵션을 lsregister다음으로 전달하십시오 .

lsregister -u ~/Desktop/MyDummyApp.app

부록 : UTI 계층 구조 및 적합성

OS X은 UTI의 계층 구조를 선언하며 여기에는 System-Declared Uniform Type Identifiers 가 나열됩니다 .

계층 구조에 몇 가지 UTI가 있습니다.

  • public.content
    • public.text
      • public.rtf
      • public.html
      • public.xml
      • public.plain-text
      • public.source-code
        • public.c-source
        • public.c-header
        • com.sun.java-source
    • public.image
      • public.jpeg
      • public.tiff
      • public.png
    • public.audiovisual-content
      • public.movie
      • public.audio

각 UTI는 상위 UTI를 "준수"합니다.

예를 들어, public.htmlHTML 텍스트를 정의 하는 UTI 는 기본 텍스트 식별자 인을 따릅니다 public.text. 이 경우 준수를 통해 일반 텍스트 파일을 열 수있는 응용 프로그램은 HTML 파일을 열 수있는 것으로 식별 할 수 있습니다. ( REF )

새 UTI를 만들 때는 UTTypeConformsTo속성을 기존 UTI 중 하나로 설정하는 것이 좋습니다 .

예를 들어, 새 UTI가 소스 코드 유형 인 경우 또는 파일을 열 수있는 모든 애플리케이션에서 열 수 있도록 UTTypeConformsTo특성을로 설정해야 합니다.public.source-codepublic.source-codepublic.plain-textpublic.text


0

다음과 같이하세요:

  1. 인식 할 수없는 확장자를 가진 파일을 선택하십시오 (예 :) .txt.

  2. 마우스 오른쪽 버튼을 클릭하고 Get Info키보드 단축키 Commandi를 선택 하거나 사용 하여 정보 창을 표시하십시오.

  3. 연결 프로그램 : 옆에있는 공개 표시기를 클릭하면 상세보기가 열립니다. 드롭 다운에서 원하는 앱을 선택하십시오. 그러면 문서가 선택한 응용 프로그램과 연결됩니다 (예 : TextEdit).

  4. 모두 변경 ... 버튼을 클릭하십시오 . 먼저 의도를 확인하라는 대화 상자가 표시되고 .txtTextEdit으로 열 모든 문서를 연결하고 문서 이름에서 return 키를 누르면 확장명이 선택되지 않은 상태로 유지됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.