OS X'in yeni dosya uzantılarını tanımasını nasıl sağlayabilirim?


16

Finder.app'da Enterseçili olan dosya veya klasörün adını düzenlemek için tuşuna basabilirsiniz .

OS X, uzantıyı değil, yalnızca dosya adı bölümünü otomatik olarak seçer:

Bu çok kullanışlıdır, çünkü bu yolla yanlışlıkla dosya adını değiştirmeden endişelenmeden yeni adı yazmaya başlayabilirsiniz.

Ancak, bu yalnızca “bilinen” dosya türleri için işe yarıyor. Bilinmeyen bir uzantıyla denerseniz, tüm dosya adı (uzantı dahil) seçilir:

Tüm .bardosyaları + I→ “Tümünü Değiştir” ile açabilen bir uygulamayı eşleştirmeyi denedim , ancak yine de yukarıda açıklanan davranışı alıyorum.

“Bilinen” dosya türlerinin listesi nerede saklanıyor? OS X'in yeni dosya türlerini tanımasını sağlamanın bir yolu var mı?

Yanıtlar:


7

Bu Süper Kullanıcı mesajı benim için çalıştı:

Bu dosyaları açmak için kullanmak istediğiniz uygulamaya göz atmanız ve paketini düzenlemeniz gerekir. Bu dosya uzantılarını işlemek için uygulamayı sağ tıklayın ve Paket İçeriğini Göster'i seçin . Git Contentsve düzenle Info.plist. Apple'ın geliştirici araçlarının bir parçası olan Özellik Listesi Düzenleyicisine ihtiyacınız olabilir . Şanslıysanız, XML biçimindedir. Bu dosyayı düzenleyin CFBundleDocumentTypesve istediğiniz uzantı için bir giriş ekleyin.

.barDosyaları açmak için TextEdit'i varsayılan uygulama olarak kullandım . Farklı yaptığım tek şey, TextEdit’e giren XML’yi şunun için Info.plistdeğiştirmekti:

    <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>

… Ve ardından LSRefresh.app'ı , başlatma hizmetleri veritabanındaki TextEdit'i yenilemek için kullandım . Daha sonra önerdiğiniz gibi çalıştı, ancak muhtemelen Textedit'in (ve diğer imzalanan uygulamaların) Lion'daki imzasını kıracak.


1
CFBundleTypeExtensionsOS X 10.5'te kullanımdan kaldırılan eski bir anahtardır . 2007 yılından bu yana tercih edilen yöntem belirtildiği gibi, yeni İYE beyan etmektir burada ve tarif Cevabıma .
TachyonVortex

4
Üzgünüm, bunu reddetmeliyim çünkü bu kötü bir tavsiye. Sadece bir uygulama paketiyle oynamaya çalışmak akıllıca değildir (tuhaf yan etki riski veya daha da kötüsü riski altındadır), ancak uygulamanın kopyasını tamamen mahvedebilir. Bu işlemin kod imzasını geçersiz kıldığını, ancak sanal
Bob

sadece dosyayı rightclick niye @binarybob, anlamıyorum nedir xxx.barbasıp open with?
Pacerier

@Bob, App standboxing nedir?
Pacerier

@Pacerier App sandboxing tamamen uygulamalar özellikle ne ayrıntıları "yetkilerinin" çok kısa bir liste ile, sistemden uygulamaları ve birbirini izole eder MacOS bir güvenlik özelliğidir edilir yapmaya izin verdi. Bu hak listesi, uygulamanın her çalıştırılışında kod imzasına eklenir ve onaylanır, böylece uygulamaların yeteneklerinin kazayla veya bir saldırı ile tahrif edilememesi sağlanır. Teknik bir açıklama için bu belgeye bakın .
Bob

25

UTI'ler ve Lansman Hizmetleri

“Bilinen” dosya türlerinin listesi nerede saklanıyor?

"Dosya türleri" için resmi terim Tekdüzen Tip Tanımlayıcıları (UTI) ve UTI'lerin veri tabanı Başlatma Hizmetleri tarafından korunmaktadır .

Kullanılması Terminal , kullandığınız Lansman Hizmetleri veritabanının içeriğini görüntüleyebilir lsregistersaklanır aracı:

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister

Her çalıştırmak istediğinizde o uzun yolu belirlemek yerine lsregister, dizini geçici olarak bilgisayarınıza ekleyebilirsiniz PATH:

PATH=/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support:"$PATH"

ve sonra lsregistersadece girerek koşabilirsiniz :

lsregister

Launch Services veritabanının içeriğini görüntülemek için:

lsregister -dump

Yeni UTI'leri Bildirmek

OS X'in yeni dosya türlerini tanımasını sağlamanın bir yolu var mı?

"Yeni Düzgün Tip Tanımlayıcıları Bildirmek" adlı bu Apple makalesi, bunun nasıl yapılacağı hakkında faydalı bilgiler sunmaktadır. İşte tüm işlem:

1. Sahte bir uygulama oluşturun

Launch Services'e kaydolmak için sahte bir uygulama oluşturun:

  • AppleScript Editor'ı açın (OS X'in Yardımcı Programlar klasöründe bulunur).
  • Onun ayarı: (Masaüstünüzde örneğin) bir yere yeni bir boş komut dosyasını kaydedin Dosya Formatı için Başvuru .

2. Info.plist dosyasını açın

  • Bulucu'da yeni kukla uygulamanızı bulun.
  • Üzerine sağ tıklayın ve açılan menüden Paket İçeriğini Göster'i seçin.
  • İçindekiler klasörünü açın .
  • Info.plist bir metin düzenleyicisinde dosyayı (örn: TextEdit ).

3. Yeni UTI'nızı ekleyin

İki anahtar seçeneği var:

  • UTExportedTypeDeclarations - kendi özel dosya adı uzantılarınız için.
  • UTImportedTypeDeclarations - Zaten var olan ancak OS X tarafından tanınmayan dosya adı uzantıları için.

İhtiyaçlarınıza en uygun anahtarı seçin.

Sonra Info.plist dosyasında, son iki satırdan ( </dict></plist>) önce bu kodu ekleyin:

<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>

aşağıdaki değişiklikleri yapmak:

  • KEYSeçtiğiniz anahtarla değiştirin ( UTExportedTypeDeclarationsveya UTImportedTypeDeclarations).
  • IDENTIFIERUygun bir ters DNS tanımlayıcısı ile değiştirin :
    • İhracat - Gibi bir şey com.mycompany.mytype
    • İthal - For id Software 'in Doom WAD biçiminde, uygun bir tanımlayıcı olacaktırcom.idsoftware.wad
  • Değiştir EXTENSION(lider nokta olmadan) dosya adı uzantısı, mesela ile: wad.

Bu, Launch Services'ın yeni UTI'nızı kabul etmesi için gereken minimum koddur. Aşağıdaki isteğe bağlı özellikleri de ekleyebilirsiniz:

  • UTTypeConformsTo - Aşağıdaki Eke bakınız.
  • UTTypeDescription - Finder'da görüntülenecek kullanıcı tarafından görülebilir bir açıklama.
  • UTTypeIconFile- Sahte uygulamanızdaki İçerik / Kaynaklar klasörüne bir Apple Simge Resmi dosyası eklerseniz ve dosya adını bu özelliğe eklerseniz, yeni dosya adı uzantınız olan dosyalar bu simgeyi kullanır.
  • UTTypeReferenceURL - Bu türü açıklayan referans belgenin URL'si.

İşte tüm isteğe bağlı özellikleri gösteren eksiksiz bir örnek:

<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. Yeni UTI'nizi Launch Services'e kaydedin

Terminal'de bu komutu çalıştırın:

lsregister <PATH_TO_APP>

<PATH_TO_APP>Sahte uygulamanızın yolu ile değiştirilmesi , örneğin:

lsregister ~/Desktop/MyDummyApp.app

Şimdi yeni dosya adı uzantınızla bir dosya oluşturup Finder'da seçip hit'i Enterseçerseniz, Finder otomatik olarak uzantıyı değil yalnızca dosya adı bölümünü seçmelidir.

Launch Services veritabanının içeriğini görüntülerseniz:

lsregister -dump

yeni UTI'nizi listede bulmalısınız:

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

Daha sonra yeni UTI'nızın kaydını silmek istiyorsanız, -useçeneği aşağıdakilere iletin lsregister:

lsregister -u ~/Desktop/MyDummyApp.app

Ek: UTI hiyerarşisi ve uygunluk

OS X, burada listelenen UTI'lerin hiyerarşisini ilan eder: Sistem Beyan Edilen Üniforma Tip Tanımlayıcıları .

İşte hiyerarşideki birkaç 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

Her UTI, ana UTI'sına "uygundur":

Örneğin, public.htmlHTML metnini tanımlayan UTI , temel metin tanımlayıcısına uygundur public.text. Bu durumda, uyumluluk, genel metin dosyalarını açabilen uygulamaların HTML dosyalarını da açabilecekleri şekilde tanımlamasını sağlar. ( ref )

Yeni bir UTI oluştururken, UTTypeConformsToözelliği mevcut UTI'lardan birine ayarlamak iyi bir fikirdir .

Yeni İYE kaynak kodu türüdür Örneğin, o zaman belirlesin UTTypeConformsTomülkü public.source-code, açabildiği herhangi bir uygulama tarafından açılabilir, böylece public.source-codeya public.plain-textya public.textdosyaları.


0

Bu adımları takip et:

  1. Tanınmayan uzantıya sahip dosyayı seçin (say, .txt).

  2. Bilgi penceresini görüntülemek için sağ tıklayın ve Get Infoklavye kısayolunu seçin veya kullanın Commandi.

  3. Ayrıntılı görünümü açmak için Şununla birlikte seçeneğinin yanındaki açıklama göstergesine tıklayın . Aşağıdan istediğiniz uygulamayı seçin. Bu, dokümanı seçilen uygulamayla ilişkilendirecektir (Örneğin, TextEdit için).

  4. Tümünü Değiştir ... düğmesine tıklayın. Öncelikle niyetinizi onaylamanızı isteyen ve tüm .txtbelgeleri TextEdit ile açılacak şekilde bağlayacak bir diyalog kutusu gösterecek ve belgenin ismine geri döndüğünüzde uzantının seçili kalmamasını sağlayacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.