Layanan ISK dan Peluncuran
Di mana daftar jenis file "dikenal" disimpan?
Istilah resmi untuk "tipe file" adalah
Uniform Type Identifiers
(UTI), dan basis data UTI dikelola oleh
Launch Services .
Menggunakan Terminal , Anda dapat melihat konten basis data Layanan Peluncuran menggunakan lsregister
alat, yang disimpan di:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister
Alih-alih menentukan jalur panjang itu setiap kali Anda ingin menjalankan lsregister
, Anda dapat menambahkan sementara direktori ke PATH
:
PATH=/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support:"$PATH"
dan kemudian Anda dapat menjalankan lsregister
hanya dengan memasukkan:
lsregister
Untuk melihat konten basis data Layanan Peluncuran:
lsregister -dump
Mendeklarasikan ISK Baru
Apakah ada cara untuk membuat OS X mengenali jenis file baru?
Artikel Apple ini,
"Mendeklarasikan Pengidentifikasi Jenis Seragam Baru" , memberikan informasi berguna tentang cara melakukan ini. Inilah proses lengkapnya:
1. Buat aplikasi dummy
Buat aplikasi tiruan untuk mendaftar dengan Layanan Peluncuran:
- Buka AppleScript Editor (terletak di folder Utilities OS X ).
- Simpan skrip kosong baru di suatu tempat (mis: pada Desktop Anda), atur Format File -nya ke Aplikasi .
2. Buka file Info.plist-nya
- Temukan aplikasi boneka baru Anda di Finder.
- Klik kanan padanya, dan pilih Show Package Contents dari menu popup.
- Buka folder Kontennya .
- Buka file Info.plist dalam editor teks (mis: TextEdit ).
3. Tambahkan ISK baru Anda
Ada dua pilihan kunci:
UTExportedTypeDeclarations
- untuk ekstensi nama file kustom Anda sendiri.
UTImportedTypeDeclarations
- untuk ekstensi nama file yang sudah ada tetapi tidak dikenali oleh OS X.
Pilih kunci yang paling sesuai dengan kebutuhan Anda.
Kemudian di file Info.plist , sebelum dua baris terakhir ( </dict></plist>
), tambahkan kode ini:
<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>
membuat perubahan berikut:
- Ganti
KEY
dengan kunci yang Anda pilih (salah satu UTExportedTypeDeclarations
atau UTImportedTypeDeclarations
).
- Ganti
IDENTIFIER
dengan pengidentifikasi DNS terbalik yang sesuai:
- Diekspor - Sesuatu seperti
com.mycompany.mytype
- Impor - Untuk id Software 's
Doom WAD Format, pengenal yang cocok akan
com.idsoftware.wad
- Ganti
EXTENSION
dengan ekstensi nama file (tanpa awalan dot), misalnya: wad
.
Ini adalah kode minimum yang diperlukan untuk Layanan Peluncuran untuk menerima ISK baru Anda. Anda juga dapat menambahkan properti opsional berikut:
UTTypeConformsTo
- Lihat Lampiran di bawah ini.
UTTypeDescription
- Deskripsi yang terlihat oleh pengguna, yang akan ditampilkan di Finder.
UTTypeIconFile
- Jika Anda menambahkan
file Apple Icon Image ke folder Contents / Resources di aplikasi dummy Anda, dan menambahkan nama file di properti ini, maka file yang memiliki ekstensi nama file baru Anda akan menggunakan ikon ini.
UTTypeReferenceURL
- URL dokumen referensi yang menjelaskan jenis ini.
Berikut ini adalah contoh lengkap yang menunjukkan semua properti opsional:
<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. Daftarkan UTI baru Anda dengan Layanan Peluncuran
Jalankan perintah ini di Terminal:
lsregister <PATH_TO_APP>
mengganti <PATH_TO_APP>
dengan jalur ke aplikasi dummy Anda, misalnya:
lsregister ~/Desktop/MyDummyApp.app
Jika sekarang Anda membuat file dengan ekstensi nama file baru Anda, dan kemudian memilihnya di Finder dan tekan Enter, Finder akan secara otomatis memilih hanya bagian nama file, bukan ekstensi.
Jika Anda melihat konten basis data Layanan Peluncuran:
lsregister -dump
Anda harus menemukan ISK baru Anda terdaftar:
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
Jika nanti Anda ingin membatalkan pendaftaran ISK baru Anda, berikan -u
opsi ke lsregister
:
lsregister -u ~/Desktop/MyDummyApp.app
Lampiran: Hirarki dan kesesuaian UTI
OS X menyatakan hierarki ISK yang tercantum di sini:
System-Declared Uniform Type Identifiers .
Berikut adalah beberapa ISK dalam hierarki:
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
Setiap ISK "sesuai dengan" induknya ISK:
Misalnya, UTI public.html
, yang mendefinisikan teks HTML, sesuai dengan pengidentifikasi teks dasar public.text
,. Dalam hal ini, kesesuaian memungkinkan aplikasi yang dapat membuka file teks umum mengidentifikasi file HTML yang dapat dibuka juga. ( ref )
Saat membuat ISK baru, sebaiknya atur UTTypeConformsTo
properti menjadi salah satu ISK yang ada.
Misalnya, jika ISK baru Anda adalah jenis kode sumber, maka Anda harus mengatur UTTypeConformsTo
properti untuk public.source-code
, sehingga dapat dibuka oleh aplikasi yang dapat membuka
public.source-code
atau public.plain-text
atau public.text
file.
CFBundleTypeExtensions
adalah kunci warisan yang menjadi usang di OS X 10.5 . Metode yang disukai sejak 2007 adalah mendeklarasikan ISK baru, sebagaimana disebutkan di sini dan dijelaskan dalam jawaban saya .