OS Xに新しいファイル拡張子を認識させるにはどうすればよいですか?


16

Finder.appで、ヒットEnterして、現在選択されているファイルまたはフォルダーの名前を編集できます。

OS Xは、拡張子ではなくファイル名部分のみを自動的に選択します。

これは、ファイル拡張子を誤って変更することを心配せずに、新しい名前の入力を開始できるため、非常に便利です。

ただし、これは「既知の」ファイルタイプでのみ機能するようです。未知の拡張子で試してみると、ファイル名全体(拡張子を含む)が選択されます:

+ →「すべてを変更」を.bar使用してすべてのファイルを開くことができるアプリケーションをマッピングしようとしましたが、上記の動作が引き続き得られます。I

「既知の」ファイルタイプのリストはどこに保存されますか?OS Xに新しいファイルタイプを認識させる方法はありますか?

回答:


7

このスーパーユーザーの投稿は私のために働いた:

これらのファイルを開くために使用するアプリケーションを参照し、そのバンドルを編集する必要があります。アプリケーションを右クリックしてこれらのファイル拡張子を処理し、[ パッケージの内容を表示]を選択します。移動しContents、編集Info.plist。Appleの開発者ツールの一部であるProperty List Editorが必要になる場合があります。運がよければ、それは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を使用して、Launch ServicesデータベースのTextEditを更新しました。その後、おそらくLion上のTextedit(およびその他の署名済みアプリケーション)のコード署名が壊れる可能性がありますが、提案どおりに機能しました。


1
CFBundleTypeExtensionsは、OS X 10.5で非推奨になったレガシーキーです。ここで言及し、私の回答で説明したように 2007年以降の推奨される方法は、新しいUTIを宣言することです。
TachyonVortex

5
申し訳ありませんが、これは悪いアドバイスなので、これに反対票を投じなければなりません。アプリのバンドルを改ざんするのは賢明ではないだけでなく(奇妙な副作用やそれ以上の危険を冒す)、アプリのコピーを完全に破壊する可能性もあります。このプロセスではコード署名が無効になりますが、サンドボックス(10.7+)をサポートするmacOSバージョンでは、無効な署名を持つサンドボックスアプリは起動または使用できません。
ボブ

1
@binarybob、私が理解していないのは、なぜファイルxxx.barを右クリックして選択しopen withないのですか?
パセリエ

@Bob、アプリのスタンドボクシングとは何ですか?
パセリエ

@Pacerierアプリサンドボックスは、アプリをシステムや相互から完全に分離するmacOSのセキュリティ機能であり、アプリ許可されている内容を具体的に示す「資格」の非常に短いリストがあります。その資格のリストはコード署名に埋め込まれ、アプリが実行されるたびに検証され、アプリの機能が偶然または攻撃によって改ざんされないようにします。技術的な説明については、このドキュメントを参照してください。
ボブ

26

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 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.新しい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.htmlHTMLテキストを定義するUTI は、ベーステキスト識別子に準拠していますpublic.text。この場合、一般的なテキストファイルを開くことができるアプリケーションは、HTMLファイルを開くことができるものとして識別することができます。(参照

新しいUTIを作成するときは、UTTypeConformsToプロパティを既存のUTIのいずれかに設定することをお勧めします。

たとえば、新しいUTIがソースコードのタイプである場合、UTTypeConformsToプロパティをpublic.source-codeに設定して、public.source-codeor public.plain-textまたはpublic.textfileを開くことができるアプリケーションで開くことができるように する必要があります。


0

次の手順を実行します:

  1. 認識されない拡張子のファイル(たとえば、.txt)を選択します。

  2. 右クリックしてGet Info、キーボードショートカットCommandiを選択または使用して、情報ウィンドウを表示します。

  3. 詳細表示を開くには、次の方法で開くの横にある開示インジケータをクリックします。ドロップダウンから目的のアプリを選択します。これにより、選択したアプリケーションにドキュメントが関連付けられます(TextEditなど)。

  4. [ すべて変更... ]ボタンをクリックします。最初に意図を確認するダイアログボックスが表示され、すべての.txtドキュメントがTextEditで開くようにリンクされ、ドキュメント名でReturnキーを押したときに拡張子が選択されないままになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.