UTI và Dịch vụ ra mắt
Đâu là danh sách các loại tập tin đã biết
Thuật ngữ chính thức cho "loại tệp" là
Số nhận dạng loại thống nhất
(UTI) và cơ sở dữ liệu của UTI được duy trì bởi
Launch Services .
Sử dụng Terminal , bạn có thể xem nội dung của cơ sở dữ liệu Launch Services bằng lsregister
công cụ được lưu trữ tại:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister
Thay vì chỉ định đường dẫn dài đó mỗi khi bạn muốn chạy lsregister
, bạn có thể tạm thời thêm thư mục của nó vào PATH
:
PATH=/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support:"$PATH"
và sau đó bạn có thể chạy lsregister
bằng cách nhập:
lsregister
Để xem nội dung của cơ sở dữ liệu Launch Services:
lsregister -dump
Tuyên bố UTI mới
Có cách nào để OS X nhận ra các loại tệp mới không?
Bài viết này của Apple,
"Khai báo định danh loại đồng phục mới" , cung cấp thông tin hữu ích về cách thực hiện việc này. Đây là quá trình hoàn chỉnh:
1. Tạo một ứng dụng giả
Tạo một ứng dụng giả để đăng ký với Launch Services:
- Mở AppleScript Editor (nằm trong thư mục Tiện ích của OS X ).
- Lưu tập lệnh trống mới ở đâu đó (ví dụ: trên Màn hình của bạn), đặt Định dạng tệp của nó thành Ứng dụng .
2. Mở tệp Info.plist của nó
- Xác định vị trí ứng dụng giả mới của bạn trong Finder.
- Nhấp chuột phải vào nó và chọn Hiển thị nội dung gói từ menu bật lên.
- Mở thư mục Nội dung của nó .
- Mở tệp Info.plist trong trình soạn thảo văn bản (ví dụ: TextEdit ).
3. Thêm UTI mới của bạn
Có hai lựa chọn:
UTExportedTypeDeclarations
- cho phần mở rộng tên tệp tùy chỉnh của riêng bạn.
UTImportedTypeDeclarations
- đối với các phần mở rộng tên tệp đã tồn tại nhưng không được OS X.
Chọn chìa khóa phù hợp nhất cho nhu cầu của bạn.
Sau đó, trong tệp Info.plist , trước hai dòng cuối cùng ( </dict></plist>
), hãy thêm mã này:
<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>
thực hiện các thay đổi sau:
- Thay thế
KEY
bằng khóa bạn đã chọn (hoặc UTExportedTypeDeclarations
hoặc UTImportedTypeDeclarations
).
- Thay thế
IDENTIFIER
bằng một định danh DNS ngược phù hợp:
- Đã xuất - Một cái gì đó như
com.mycompany.mytype
- Đã nhập - Đối với định dạng Doom WAD của
Phần mềm id , số nhận dạng phù hợp sẽ là
com.idsoftware.wad
- Thay thế
EXTENSION
bằng phần mở rộng tên tệp (không có dấu chấm hàng đầu), ví dụ : wad
.
Đây là mã tối thiểu cần thiết để Launch Services chấp nhận UTI mới của bạn. Bạn cũng có thể thêm các thuộc tính tùy chọn sau:
UTTypeConformsTo
- Xem Phụ lục bên dưới.
UTTypeDescription
- Mô tả người dùng có thể nhìn thấy, sẽ được hiển thị trong Finder.
UTTypeIconFile
- Nếu bạn thêm
tệp Hình ảnh Biểu tượng của Apple vào thư mục Nội dung / Tài nguyên trong ứng dụng giả của bạn và thêm tên tệp của nó trong thuộc tính này, thì các tệp có phần mở rộng tên tệp mới của bạn sẽ sử dụng biểu tượng này.
UTTypeReferenceURL
- URL của tài liệu tham khảo mô tả loại này.
Đây là một ví dụ hoàn chỉnh hiển thị tất cả các thuộc tính tùy chọn:
<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. Đăng ký UTI mới của bạn với Dịch vụ Khởi chạy
Chạy lệnh này trong Terminal:
lsregister <PATH_TO_APP>
thay thế <PATH_TO_APP>
bằng đường dẫn đến ứng dụng giả của bạn, ví dụ:
lsregister ~/Desktop/MyDummyApp.app
Nếu bây giờ bạn tạo một tệp có phần mở rộng tên tệp mới của mình, sau đó chọn tệp đó trong Finder và nhấn Enter, Finder sẽ tự động chỉ chọn phần tên tệp chứ không phải phần mở rộng.
Nếu bạn xem nội dung của cơ sở dữ liệu Dịch vụ khởi chạy:
lsregister -dump
bạn nên tìm UTI mới được liệt kê:
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
Nếu sau này bạn muốn hủy đăng ký UTI mới của mình, hãy chuyển -u
tùy chọn này sang lsregister
:
lsregister -u ~/Desktop/MyDummyApp.app
Phụ lục: Phân cấp và tuân thủ UTI
OS X tuyên bố một hệ thống phân cấp của UTI được liệt kê ở đây:
Số nhận dạng loại thống nhất được khai báo hệ thống .
Dưới đây là một vài UTI trong hệ thống phân cấp:
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
Mỗi UTI "phù hợp với" UTI mẹ của nó:
Ví dụ, UTI public.html
, định nghĩa văn bản HTML, tuân thủ định danh văn bản cơ sở , public.text
. Trong trường hợp này, sự phù hợp cho phép các ứng dụng có thể mở các tệp văn bản chung xác định các tệp HTML cũng như các tệp mà nó có thể mở. (tham khảo )
Khi tạo một UTI mới, bạn nên đặt thuộc UTTypeConformsTo
tính thành một trong những UTI hiện có.
Ví dụ: nếu UTI mới của bạn là một loại mã nguồn, thì bạn nên đặt thuộc UTTypeConformsTo
tính thành public.source-code
, để nó có thể được mở bởi bất kỳ ứng dụng nào có thể mở
public.source-code
hoặc public.plain-text
hoặc public.text
tệp.
CFBundleTypeExtensions
là một khóa kế thừa đã bị phản đối trong OS X 10.5 . Phương pháp ưa thích từ năm 2007 là khai báo UTI mới, như được đề cập ở đây và được mô tả trong câu trả lời của tôi .