ฉันจะทำให้ OS X รู้จักนามสกุลไฟล์ใหม่ได้อย่างไร


12

ใน Finder.app คุณสามารถกด เข้าสู่ เพื่อแก้ไขชื่อของไฟล์หรือโฟลเดอร์ที่เลือกในปัจจุบัน

OS X จะเลือกเฉพาะส่วนชื่อไฟล์โดยอัตโนมัติไม่ใช่ส่วนขยาย:

สิ่งนี้มีประโยชน์มากเพราะคุณสามารถเริ่มพิมพ์ชื่อใหม่ได้โดยไม่ต้องกังวลว่าจะเปลี่ยนนามสกุลไฟล์

อย่างไรก็ตามดูเหมือนว่าจะใช้งานได้กับไฟล์ประเภท "รู้จัก" เท่านั้น หากคุณลองด้วยนามสกุลที่ไม่รู้จักชื่อไฟล์ทั้งหมด (รวมถึงนามสกุล) จะถูกเลือก:

ฉันลองแมปแอปพลิเคชันที่สามารถเปิดได้ทั้งหมด .bar ไฟล์ผ่าน + ผม →“ เปลี่ยนทั้งหมด” แต่ฉันยังคงรับพฤติกรรมตามที่อธิบายไว้ข้างต้น

รายการประเภทไฟล์ "รู้จัก" จัดเก็บอยู่ที่ใด มีวิธีที่จะทำให้ OS X รู้จักชนิดไฟล์ใหม่หรือไม่?

คำตอบ:


7

นี้ โพสต์ SuperUser ทำงานให้ฉัน:

คุณต้องเรียกดูแอปพลิเคชันที่คุณต้องการใช้เพื่อเปิดไฟล์เหล่านี้และแก้ไขชุดไฟล์ คลิกขวาที่แอปพลิเคชันเพื่อจัดการส่วนขยายไฟล์เหล่านี้แล้วเลือก แสดงเนื้อหาของแพ็คเกจ . นำทางไปยัง Contentsและแก้ไข Info.plist. คุณอาจต้องการ ตัวแก้ไขรายการคุณสมบัติ ซึ่งเป็นส่วนหนึ่งของเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของ Apple หากคุณโชคดีมันอยู่ในรูปแบบ XML แก้ไขไฟล์นี้ CFBundleDocumentTypes และเพิ่มรายการสำหรับส่วนขยายที่คุณต้องการ

ฉันใช้ TextEdit เป็นแอปพลิเคชั่นเริ่มต้นเพื่อเปิด .bar ไฟล์ สิ่งเดียวที่ฉันทำแตกต่างกันคือเปลี่ยน XML ที่ไปใน TextEdit 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 ในฐานข้อมูลเปิดตัวบริการ จากนั้นก็ใช้งานได้ตามที่คุณแนะนำแม้ว่ามันอาจจะทำลายรหัสลายเซ็นของ Textedit (และแอปพลิเคชั่นที่เซ็นชื่ออื่น ๆ ) บน Lion


CFBundleTypeExtensions เป็นรหัสมรดกซึ่งกลายเป็น เลิกใช้แล้วใน OS X 10.5 . วิธีที่ต้องการตั้งแต่ปี 2550 คือการประกาศ UTIs ใหม่ดังที่กล่าวไว้ ที่นี่ และอธิบายไว้ใน คำตอบของฉัน .
TachyonVortex

3
ฉันขอโทษฉันต้องลงคะแนนเพราะนี่เป็นคำแนะนำที่ไม่ดี ไม่เพียง แต่มันจะไม่ฉลาดที่จะเข้าไปยุ่งกับชุดแอพ (เสี่ยงต่อการเกิดผลข้างเคียงที่แปลกประหลาดหรือแย่กว่านั้น) แต่มันยังสามารถทำลายสำเนาของแอพได้อย่างสมบูรณ์ คุณทราบว่ากระบวนการนี้จะทำให้รหัสลายเซ็นเป็นโมฆะ แต่ล้มเหลวในการชี้ให้เห็นว่าในรุ่น macOS ที่รองรับการทดลองใช้ Sandbox (10.7+) แอป sandbox ที่มีลายเซ็นไม่ถูกต้อง ไม่สามารถเปิดตัวหรือใช้งานในทางใดทางหนึ่ง
Bob

@binarybob สิ่งที่ฉันไม่เข้าใจคือทำไมคุณไม่คลิกขวาที่ไฟล์ xxx.bar และเลือก open with?
Pacerier

@Bob แอปแสตนด์บ็อกซ์คืออะไร
Pacerier

@Pacerier App sandboxing เป็นคุณลักษณะด้านความปลอดภัยของ macOS ที่แยกแอพออกจากระบบและกันและกันโดยมีรายการ "สิทธิ" ที่สั้นมากซึ่งให้รายละเอียดเฉพาะแอพใด เป็น อนุญาตให้ทำ รายการการให้สิทธิ์นั้นจะถูกฝังในรหัสลายเซ็นและตรวจสอบทุกครั้งที่มีการเรียกใช้แอพเพื่อให้แน่ใจว่าความสามารถของแอพไม่สามารถแก้ไขได้ไม่ว่าจะโดยอุบัติเหตุหรือจากการถูกโจมตี ดู เอกสารนี้ สำหรับคำอธิบายทางเทคนิค
Bob

18

UTIs และบริการเรียกใช้

รายการประเภทไฟล์ "รู้จัก" จัดเก็บอยู่ที่ใด

คำที่เป็นทางการสำหรับ "ประเภทไฟล์" คือ ตัวระบุประเภทเครื่องแบบ (UTIs) และฐานข้อมูลของ UTIs ถูกดูแลโดย เปิดตัวบริการ .

ใช้ สถานีปลายทาง , คุณสามารถดูเนื้อหาของฐานข้อมูล Launch Services ได้โดยใช้ lsregister เครื่องมือซึ่งถูกเก็บไว้ที่:

/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

ประกาศ UTIs ใหม่

มีวิธีที่จะทำให้ OS X รู้จักชนิดไฟล์ใหม่หรือไม่?

บทความของ Apple นี้ "ประกาศตัวระบุชนิดเครื่องแบบใหม่" , ให้ข้อมูลที่เป็นประโยชน์เกี่ยวกับวิธีการทำเช่นนี้ นี่คือกระบวนการที่สมบูรณ์:

1. สร้างแอปพลิเคชันจำลอง

สร้างแอปพลิเคชันจำลองเพื่อลงทะเบียนด้วย Launch Services:

  • เปิด AppleScript Editor (อยู่ใน OS X's ยูทิลิตี้ โฟลเดอร์)
  • บันทึกสคริปต์เปล่าใหม่ที่ใดที่หนึ่ง (เช่น: บนเดสก์ท็อปของคุณ), ตั้งค่า รูปแบบไฟล์ ไปยัง ใบสมัคร .

2. เปิดไฟล์ Info.plist

  • ค้นหาแอปพลิเคชันจำลองใหม่ของคุณใน Finder
  • คลิกขวาที่มันแล้วเลือก แสดงเนื้อหาของแพ็คเกจ จากเมนูป๊อปอัพ
  • เปิดมัน สารบัญ โฟลเดอร์
  • เปิด Info.plist ไฟล์ในโปรแกรมแก้ไขข้อความ (เช่น: TextEdit )

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 ด้วยตัวระบุ reverse-DNS ที่เหมาะสม:
    • ส่งออกแล้ว - มีบางอย่างที่เหมือนกัน com.mycompany.mytype
    • นำเข้า - สำหรับ ซอฟต์แวร์ id 's Doom WAD รูปแบบตัวระบุที่เหมาะสมจะเป็น com.idsoftware.wad
  • แทนที่ EXTENSION ด้วยนามสกุลไฟล์ (ไม่มีจุดนำ) เช่น: wad.

นี่คือรหัสขั้นต่ำที่จำเป็นสำหรับการเปิดตัวบริการเพื่อยอมรับ UTI ใหม่ของคุณ คุณยังสามารถเพิ่มคุณสมบัติทางเลือกต่อไปนี้:

  • UTTypeConformsTo - ดูภาคผนวกด้านล่าง
  • UTTypeDescription - คำอธิบายที่ผู้ใช้มองเห็นได้ซึ่งจะปรากฏใน Finder
  • UTTypeIconFile - หากคุณเพิ่ม รูปภาพไอคอนของ Apple ไฟล์ไปที่ สารบัญ / ทรัพยากรธรรมชาติ โฟลเดอร์ในแอปพลิเคชันจำลองของคุณและเพิ่มชื่อไฟล์ในคุณสมบัตินี้ จากนั้นไฟล์ที่มีนามสกุลไฟล์ใหม่จะใช้ไอคอนนี้
  • 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. ลงทะเบียน UTI ใหม่ของคุณด้วย Launch Services

เรียกใช้คำสั่งนี้ในเทอร์มินัล:

lsregister <PATH_TO_APP>

การแทนที่ <PATH_TO_APP> ด้วยพา ธ ไปยังแอปพลิเคชันจำลองของคุณเช่น:

lsregister ~/Desktop/MyDummyApp.app

หากตอนนี้คุณสร้างไฟล์ที่มีนามสกุลไฟล์ใหม่แล้วเลือกไฟล์ใน Finder และตี เข้าสู่ ตัวค้นหาควรเลือกเฉพาะชื่อไฟล์โดยอัตโนมัติไม่ใช่ส่วนขยาย

หากคุณดูเนื้อหาของฐานข้อมูล 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 ประกาศลำดับชั้นของ UTIs ที่แสดงไว้ที่นี่: ตัวระบุประเภทเครื่องแบบแบบระบบประกาศ .

นี่คือ UTIs บางส่วนในลำดับชั้น:

  • 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 หลักของมัน:

ตัวอย่างเช่น UTI public.htmlซึ่งกำหนดข้อความ HTML สอดคล้องกับ   ตัวระบุข้อความฐาน public.text. ในกรณีนี้ความสอดคล้องช่วยให้แอปพลิเคชัน   ที่สามารถเปิดไฟล์ข้อความทั่วไประบุไฟล์ HTML เป็นไฟล์ที่สามารถเปิดได้เช่นกัน   ( อ้าง )

เมื่อสร้าง UTI ใหม่คุณควรตั้งค่า UTTypeConformsTo คุณสมบัติหนึ่ง ของ UTIs ที่มีอยู่

ตัวอย่างเช่นถ้า UTI ใหม่ของคุณเป็นรหัสต้นฉบับ จากนั้นคุณควรตั้งค่า UTTypeConformsTo ทรัพย์สินเพื่อ public.source-code, เพื่อให้สามารถเปิดได้โดยแอปพลิเคชันใด ๆ ที่สามารถเปิดได้ public.source-code หรือ public.plain-text หรือ public.text ไฟล์


1

ทำตามขั้นตอนเหล่านี้:

  1. เลือกไฟล์ที่มีนามสกุลที่ไม่รู้จัก (เช่น .txt )

  2. คลิกขวาและเลือก Get Info หรือใช้แป้นพิมพ์ลัด คำสั่ง ผม เพื่อแสดงหน้าต่างข้อมูล

  3. คลิกที่ตัวบ่งชี้การเปิดเผยนอกเหนือจาก เปิดด้วย: เพื่อเปิดมุมมองแบบละเอียด เลือกแอพที่ต้องการจากดรอปดาวน์ สิ่งนี้จะเชื่อมโยงเอกสารกับแอปพลิเคชันที่เลือก (เช่น TextEdit)

  4. คลิกที่ เปลี่ยนทั้งหมด ... ปุ่ม. มันจะแสดงกล่องโต้ตอบที่ขอให้ยืนยันความตั้งใจของคุณก่อนและจะเชื่อมโยงทั้งหมด .txt เอกสารที่จะเปิดด้วย TextEdit และปล่อยส่วนขยายไว้โดยไม่เลือกเมื่อคุณกดส่งคืนชื่อเอกสาร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.