UTIと打ち上げサービス
「既知の」ファイルタイプのリストはどこに保存されますか?
「ファイルタイプ」の正式な用語は
Uniform Type Identifiers
(UTI)であり、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の記事
「Declaring New Uniform Type Identifiers」は、これを行う方法に関する有用な情報を提供します。完全なプロセスは次のとおりです。
1.ダミーアプリケーションを作成する
Launch Servicesに登録するダミーアプリケーションを作成します。
- AppleScript Editor(OS XのUtilitiesフォルダにあります)を開きます。
- 新しい空のスクリプトをどこかに(たとえば、デスクトップ上に)保存し、ファイル形式をApplicationに設定します。
2. Info.plistファイルを開きます
- Finderで新しいダミーアプリケーションを見つけます。
- それを右クリックし、ポップアップメニューから[ パッケージの内容を表示] を選択します。
- そのContentsフォルダーを開きます。
- Info.plistファイルをテキストエディター(例:TextEdit)で開きます。
3.新しいUTIを追加します
次の2つのキーから選択できます。
UTExportedTypeDeclarations
–独自のカスタムファイル名拡張子用。
UTImportedTypeDeclarations
–すでに存在するが、OS Xによって認識されないファイル名拡張子の場合。
ニーズに最も適したキーを選択してください。
次に、Info.plistファイルの最後の2行(</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 Softwareの
Doom 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.新しいUTIをLaunch Servicesに登録します
ターミナルで次のコマンドを実行します。
lsregister <PATH_TO_APP>
<PATH_TO_APP>
ダミーアプリケーションへのパスに置き換えます。例:
lsregister ~/Desktop/MyDummyApp.app
新しいファイル名拡張子でファイルを作成し、Finderで選択してを押すと、Finder Enterは拡張子ではなくファイル名部分のみを自動的に選択するはずです。
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は、システムで宣言されたUniform Type IdentifiersにリストされているUTIの階層を宣言します
。
階層内のいくつかの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.html
HTMLテキストを定義するUTI は、ベーステキスト識別子に準拠していますpublic.text
。この場合、一般的なテキストファイルを開くことができるアプリケーションは、HTMLファイルを開くことができるものとして識別することができます。(参照)
新しいUTIを作成するときは、UTTypeConformsTo
プロパティを既存のUTIのいずれかに設定することをお勧めします。
たとえば、新しいUTIがソースコードのタイプである場合、UTTypeConformsTo
プロパティをpublic.source-code
に設定して、public.source-code
or public.plain-text
またはpublic.text
fileを開くことができるアプリケーションで開くことができるように
する必要があります。
CFBundleTypeExtensions
は、OS X 10.5で非推奨になったレガシーキーです。ここで言及し、私の回答で説明したように、 2007年以降の推奨される方法は、新しいUTIを宣言することです。