Geri Dön Dosya Türü Derneği


12

Bazen iTunes Müzik Mağazası paketleriyle çalışıyorum. Bu paketlerin bir .itmspuzantısı var. Gibi .app, .itmspaslında bir konteyner dizini. .itmspklasörlerinde XML ve medya dosyaları bulunur.

En son Xcode ve / veya Mac OS X güncellemesi (Mac OS 10.8.3'te Xcode 4.6.1), .itmspuzantıya sahip dizinler için dosya türü ilişkilendirmesini ele geçirdi . Daha önce normal klasörler gibi davranılıyordu - içeride görmek için çift tıklamaya gerek yok. Şimdi, onlarla etkileşim kurmak için onları çift tıklatmam gerekiyor. Bunu yaptığımda, Uygulama Yükleyici adlı bir program bunları açmaya çalışır. İçini görmek için sağ tıklayıp "Paket İçeriğini Göster" i seçmem gerekiyor. Herhangi bir zamanda bu dosyalardan binlerce ile ilgileniyorum, bu yüzden işe yaramaz.

Get Info ve RCDefaultApp kullanarak filetype dernek değiştirme veya kaldırma denedim. İkisi de işe yaramıyor. Filetype ilişkilendirmesinin kaldırılması, .itmspdizinleri boş dosyalara dönüştürür. Application Loader.app tamamen siliniyor. Her iki durumda da, sağ tıklamadan içeriğe hala göz atamıyorum.

Daha önce kabul edilen cevap bir süre çalıştı: lsregister -u /Applications/Contents/Applications/Application\ Loader.app/Xcode ve / veya Mac OS X'i güncellediğimden beri çalışmayı durdurdu. Xcode yüklüyse, bunu bir dizin adlandırarak kendiniz test edebilmeniz gerekir foo.itmsp.

.itmspDosyaların bir kez daha klasör olarak ele alınmasını nasıl sağlayabilirim ?


Xcode Uygulama Simgesindeki bir dosyayı sürükleyip bırakmayı ve istediğiniz şeyi yapıp yapmadığını görmeyi denediniz mi?
MrDaniel

Önerin için teşekkürler. Bu konuyla ilgili değil, bu yüzden niyetimi açıklığa kavuşturmak için sorumu düzenlemeye çalışacağım.
michaelmichael

1
Hangi OS X sürümünü kullanıyorsunuz? Xcode'un hangi sürümü?
Old Pro

CFBundleDocumentTypes türleri kaldırmak ve Launch Service DataBase öldürdü Yanıtımı sildi. Bir süre çalışır, ancak bir süre sonra kendini tekrar kuruyor gibi görünmektedir. ??
markhunte

Yanıtlar:


11

Sorun: .itmsp klasörleri dosya olarak gösteriliyor

Finder .itmsp klasörlerini paketler halinde , yani tek bir dosyaymış gibi ele alır . Örneğin, sütun görünümünde .itmsp klasöründe bulunan herhangi bir şey görünmezdir, yalnızca belge simgesi gösterilir:

resim açıklamasını buraya girin

Aşağıdaki koşullardan herhangi biri doğruysa Finder bir dizini paket olarak kabul eder ( Paket Programlama Kılavuzu'ndan ):

  1. Dizin bilinen bir uzantısı bulunmaktadır: .App, .bundle, .framework, .plugin, .kext, ve böylece (de tanımlandığı gibi /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist. Bu Xcode ile açmak, bir ikili Plist olup: open -a Xcode Info.plist).

  2. Dizin, diğer bazı uygulama iddialarının bir paket türünü temsil ettiği bir uzantıya sahiptir (bulmak için com.apple.packageçıktıya bakın mdls -name kMDItemContentTypeTree <foldername>.)

  3. Dizinde paket biti ayarlanmıştır ( GetFileInfo -ab <foldername>döndürürse 1ayarlanır.)

Durum 2. .itmsp klasörlerine uygulanır: Application Loader.apptürü dışa aktarır com.apple.itunes-producer.itmspve aşağıdakilere uyacak şekilde ayarlar com.apple.package:

$ mkdir foo.itmsp
$ mdls -name kMDItemContentTypeTree foo.itmsp/
kMDItemContentTypeTree = (
    "com.apple.itunes-producer.itmsp",
    "com.apple.package",
    (...)
)
$ grep -B 5 -A 8 com.apple.package /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Info.plist 
    <key>UTExportedTypeDeclarations</key>
    <array>
        <dict>
            <key>UTTypeConformsTo</key>
            <array>
                <string>com.apple.package</string>
                <string>public.composite-content</string>
            </array>
            <key>UTTypeDescription</key>
            <string>iTunes Package</string>
            <key>UTTypeIconFile</key>
            <string>ITMSP.icns</string>
            <key>UTTypeIdentifier</key>
            <string>com.apple.itunes-producer.itmsp</string>

Bir çözüm: türü yeniden beyan com.apple.itunes-producer.itmsp

Bir çözüm, tür com.apple.itunes-producer.itmspve uzantıyı itmspbir klasör olarak yeniden bildirmek ve Launch Services'ı değiştirilmiş tür bildirimini kullanmaya zorlamak olacaktır.

Önemli Not:

Her ne kadar OP'nin sorununu güvenilir bir şekilde çözse de, önerilen çözüm diğer paketlere uygulandığında bunları klasör olarak görüntülemez.

Önerilen çözümün yalnızca standart olmayan bir uygulama yolunda bulunan uygulamalar tarafından bildirilen dosya türleriyle çalıştığını öğrendim.

Bu olduğu Application Loader.appyer almaktadır /Applications/Xcode.app/Contents/Applications/.

Kısmi bir çözümle ilgileniyorsanız, bu cevabın sonunu kontrol edin.

.İtmsp klasörlerinin Finder tarafından klasör olarak görüntülenmesini sağlamak için aşağıdaki adımları izleyin:

  1. Açık Otomatikleştirici Uygulamaları klasör basıp içinde Uygulaması :

    resim açıklamasını buraya girin

  2. Kütüphane listesinden Yardımcı Programlar'ı seçin, Kabuk Betiğini Çalıştır'ı seçin ve sağdaki bölmeye sürükleyin:

    resim açıklamasını buraya girin

  3. Varsayılan komut dosyası içeriğini aşağıdakilerle değiştirin exit 0:

    resim açıklamasını buraya girin

  4. Uygulamayı itmspOpener kaydedin:

    resim açıklamasını buraya girin

  5. Automator'u kapatın.

  6. itmspOpener.appİçeriğini seçin ve gösterin:

    resim açıklamasını buraya girin

  7. İçindekiler> Bilgi.plist'i bulun ve favori düzenleyicinizle açın:

    resim açıklamasını buraya girin

  8. Bu bölümleri aşağıdaki gibi değiştirin Info.plist:

    <key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeExtensions</key>
            <array>
                <string>itmsp</string>
            </array>
            <key>CFBundleTypeName</key>
                <string>itmsp folder</string>
            <key>CFBundleTypeRole</key>
                <string>Viewer</string>
            <key>CFBundleTypeIconFile</key>
                <string>folder</string>
            <key>LSTypeIsPackage</key>
                <false/>
            <key>LSHandlerRank</key>
                <string>Owner</string>
        </dict>
    </array>
    (...)
    <key>UTExportedTypeDeclarations</key>
    <array>
        <dict>
            <key>UTTypeConformsTo</key>
            <array>
                <string>kUTTypeDirectory</string>
            </array>
            <key>UTTypeDescription</key>
            <string>itmsp folder</string>
            <key>UTTypeIconFile</key>
            <string>folder.icns</string>
            <key>UTTypeIdentifier</key>
            <string>com.apple.itunes-producer.itmsp</string>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>public.filename-extension</key>
                <string>itmsp</string>
            </dict>
        </dict>
    </array>
    

    Not: Neden kUTTypeDirectoryyerine public.directoryde UTExportedTypeDeclarations? Gönderen Apple'ın belgelerinde : Önemli: Kodunuzdaki sistem tanımlı İYE kullanırken, tanımlanan sabitleri kullanmalıdır UTCoreTypes.hmevcut Lansmanı Hizmetleri çerçevesinde yerine gerçek İYE dizeleri. Örneğin, "com.apple.application" yerine kUTTypeApplication iletin. “Sistem tarafından Beyan Edilen Tek Tip Tip Tanımlayıcılar” bu sabitleri UTI dizelerine ek olarak listeler.

  9. Bir .itmsp dosyasını ilişkilendirin itmspOpenerve düğmesine basın Change All...:

    resim açıklamasını buraya girin

  10. Başlatma Hizmetleri veritabanını sıfırlayın:

    $ lsregister -kill -r -domain local -domain system -domain user
    

    (OS X 10.8'de lsregisterbulunur /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/.)

  11. Bir .itmsp klasörü oluşturun ve özelliklerini listeleyin:

    $ mkdir foo3.itmsp
    $ mdls -name kMDItemContentTypeTree foo3.itmsp/
    kMDItemContentTypeTree = (
        "public.folder",
        "public.directory",
        "public.item"
    )
    

    Başlatma Hizmetleri veritabanı sıfırlandığından, Finder .itmsp klasörlerini klasör olarak gösterir.

  12. Açık itmspOpener.appolan Plist dosyası yüklemek ve kaydetmek için com.apple.itunes-producer.itmsp:

    $ open ~/Desktop/itmspOpener.app
    
  13. Başlangıç Application Loader.app:

    $ open '/Applications/Xcode.app/Contents/Applications/Application Loader.app'
    

    Klasör foo3.itmspyine de klasör olarak görüntülenmelidir.

  14. Klasör özelliklerini tekrar kontrol edin:

    $ mdls -name kMDItemContentTypeTree foo3.itmsp/
    kMDItemContentTypeTree = (
        "public.directory",
        "public.item",
        "public.content"
    )
    

    com.apple.package klasörün meta veri özniteliklerine eklenmediğinden, Finder hala .itmsp klasörlerini klasör olarak görüntüler!

Otomatik çözüm: .itmsp klasörlerini giriş yaptıktan sonra klasör olarak görüntüleme

Oturum açtıktan sonra .itmsp klasörlerini klasör olarak görüntülemek için:

  1. Oluşturun itmspOpener.appve Info.plistyukarıda açıklandığı gibi değiştirin .

  2. /usr/local/bin/itmspTypeLoaderBu içerikle oluşturun (değişken itmspOpener, bulunduğu yere işaret eder, itmspOpener.appgerekirse değiştirin):

    #!/bin/bash
    
    itmspOpener="/Users/jaume/Applications/itmspOpener.app/"
    
    echo "$(date): Starting" > /tmp/itmspTypeLoader.log
    sleep 15
    echo "$(date): Deleting Launch Services database" >> /tmp/itmspTypeLoader.log
    /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user >> /tmp/itmspTypeLoader.log
    sleep 15
    echo "$(date): Starting $itmspOpener" >> /tmp/itmspTypeLoader.log
    open $itmspOpener >> /tmp/itmspTypeLoader.log
    sleep 1
    echo "$(date): Starting Application Loader.app" >> /tmp/itmspTypeLoader.log
    open "/Applications/Xcode.app/Contents/Applications/Application Loader.app/"
    
    # Wait until process "Application Loader.app" exists
    while [ $(ps -ef|grep -v grep|grep -c "Application Loader") -ne 1 ]; do
        sleep 1
        echo "$(date): Waiting" >> /tmp/itmspTypeLoader.log
    done
    # Send TERM signal
    kill -TERM $(ps -ef|grep "Application Loader"|grep -v grep|awk "{print \$2}")
    if [ $? -eq 0 ]; then
        echo "$(date): Application Loader killed" >> /tmp/itmspTypeLoader.log
    else
        echo "$(date): Application Loader could not be killed" >> /tmp/itmspTypeLoader.log
    fi
    echo "$(date): Exiting" >> /tmp/itmspTypeLoader.log
    

    Koşmadan sleep 15önce ve sonra hem lsregisterçok önemlidir. İstediğiniz sonucu görmüyorsanız, farklı gecikmeler deneyin.

  3. /usr/local/bin/itmspTypeLoaderLauncherBu içerikle oluştur :

    #!/bin/bash
    
    # $1 returns the short name of the user who is logging in
    su - $1 -c /usr/local/bin/itmspTypeLoader &
    
  4. Her iki komut dosyasını yürütülebilir olarak ayarla:

    $ sudo chmod a+x /usr/local/bin/itmspTypeLoader /usr/local/bin/itmspTypeLoaderLauncher 
    
  5. Giriş kancası/usr/local/bin/itmspTypeLoaderLauncher olarak ayarla :

    $ sudo defaults write com.apple.loginwindow LoginHook /usr/local/bin/itmspTypeLoaderLauncher
    
  6. Değişikliklerin etkili olması için yeniden başlatın. Giriş yaptıktan sonra şunu görmelisiniz:

    resim açıklamasını buraya girin

    ve lsregister -dumpo açığa çıkarmalıdır itmspOpener.app's UTExportedTypeDeclarationsönceliklidir Application Loader.apps':

    $ lsregister -dump | less
    bundle  id:            24748
            path:          /Users/jaume/Desktop/itmspOpener.app/
            name:          itmspOpener
            (...)
            flags:         apple-internal  relative-icon-path  ui-element  has-min-sys-version-by-arch  hi-res-capable  user-can-change-hi-res-mode  
            item flags:    container  package  application  extension-hidden  native-app  scriptable  services  x86_64  
            (...)
            --------------------------------------------------------
            type    id:            33796
                    uti:           com.apple.itunes-producer.itmsp
                    description:   itmsp folder
                    flags:         exported  active  apple-internal  trusted  
                    icon:          Contents/Resources/folder.icns
                    conforms to:   kuttypedirectory
                    tags:          .itmsp
            --------------------------------------------------------
            (...)
    bundle  id:            24600
            path:          /Applications/Xcode.app/Contents/Applications/Application Loader.app/
            name:          Application Loader
            (...)
            flags:         apple-internal  relative-icon-path  hi-res-capable  user-can-change-hi-res-mode  
            item flags:    container  package  application  extension-hidden  native-app  i386  x86_64  
            (...)
            --------------------------------------------------------
            type    id:            33832
                    uti:           com.apple.itunes-producer.itmsp
                    description:   iTunes Package
                    flags:         exported  inactive  apple-internal  trusted  
                    icon:          Contents/Resources/ITMSP.icns
                    conforms to:   com.apple.package, public.composite-content
                    tags:          .itmsp
            --------------------------------------------------------
    

    inactiveApplication Loader.app türünün dışa aktarımında ayarlanmış bayrağı görüyor musunuz ? Uygulama Yükleyiciyi yendik.

Asit testi: .itmsp klasörleri iTunes güncellemesinden sonra hala görüntüleniyor

Son zamanlarda Xcode'u güncelledim:

resim açıklamasını buraya girin

ve güncelleme sırasında .itmsp klasörlerinin klasör olarak gösterildiğini onaylayabilir:

resim açıklamasını buraya girin

ve sonrasında:

resim açıklamasını buraya girin

Kısmi bir çözüm: Paket, çift tıklandığında içeriği gösterecektir

Daha önce yorumlandığı gibi, yukarıda açıklanan prosedür Finder tarafından paket olarak görüntülenen rastgele klasörlerle çalışmaz.

Ancak, bir paketi açmak için sadece çift tıklamak istiyorsanız, bir bashkomut dosyası ve Automator ile yapmanın bir yolu vardır :

  • Komut dosyası, paketin içinde gizli, geçici bir klasör oluşturur, onu Finder'da gösterir (böylece paketi klasör olarak gösterir) ve sonra geçici klasörü siler.

    Not:

    Komut dosyası bunun yerine gizli, geçici bir dosya oluşturabilir. Ancak, bir klasör oluşturmayı tercih ediyorum çünkü rmdirsadece boş klasörleri rmsilerken, herhangi bir dosyayı siler , bu nedenle eğer bir nedenle. komut dosyası tahribat yaratır, sadece boş klasörler silinir, bu da dosyalar silinmiş gibi kötü değildir.

  • Automator, komut dosyasını paket dosyalarıyla ilişkilendirilecek bir uygulamada paketler.

Bunlar böyle bir uygulama oluşturma adımlarıdır. Aşağıdaki açıklamada .itmsp dosyalarını paket türü örneği olarak kullanacağım:

  1. Açık Otomatikleştirici Uygulamaları klasör basıp içinde Uygulaması :

    resim açıklamasını buraya girin

  2. Kütüphane listesinden Yardımcı Programlar'ı seçin , Kabuk Betiğini Çalıştır'ı seçin ve sağdaki bölmeye sürükleyin:

    resim açıklamasını buraya girin

  3. Set Geçiş giriş için argümanlar olarak :

    resim açıklamasını buraya girin

  4. Varsayılan komut dosyası içeriğini bununla değiştir:

    for f in "$@"; do
        # If not dealing with a directory, exit
        if [ ! -d "$f" ]; then exit; fi
        # Create a temporary directory inside the itmsp "file"
        tmpdir="$f/.itmspOpener$$"
        if mkdir $tmpdir; then
            # Reveal in Finder
            open -R $tmpdir
            # Delete temporary file
            rmdir $tmpdir
        fi
    done
    
  5. Uygulamayı itmspOpener kaydedin:

    resim açıklamasını buraya girin

  6. Automator'u kapatın.

Şimdi .itmsp dosyalarını ilişkilendirilmişse klasör olarak açabilen bir uygulamanız var.

Kozmetik bir sorun var: durduğu gibi, ilişkili dosyalar standart beyaz belge simgesine sahip olacak:

resim açıklamasını buraya girin

Bunu da düzeltelim:

  1. Automator'un kapalı olduğundan emin olun.

  2. İtmspOpener'ı seçin ve içindekileri gösterin:

    resim açıklamasını buraya girin

  3. İçindekiler> Bilgi.plist'i bulun ve favori düzenleyicinizle açın:

    resim açıklamasını buraya girin

  4. Dizideki bu anahtarın değerini değiştirin CFBundleDocumentTypes:

    <key>CFBundleTypeName</key>
    <string>itmsp folder</string>
    

    ve şu anahtarı ekleyin:

    <key>CFBundleTypeIconFile</key>
    <string>folder</string>
    

    Şimdi, bölüm şöyle görünür:

    resim açıklamasını buraya girin

  5. Finder'a geçin, bir klasör seçin, tuşuna basın I, sol üst köşedeki klasör simgesini seçin ve şununla kopyalayın C:

    resim açıklamasını buraya girin

  6. Önizleme'yi açın ve Panodan Dosya> Yeni'yi seçin. Dosyayı şu şekilde kaydedin folder.icns:

    resim açıklamasını buraya girin

  7. Kopya folder.icnsiçin itmspOpener/Contents/Resources:

    resim açıklamasını buraya girin

  8. Bir .itmsp dosyasını ilişkilendirin itmspOpenerve düğmesine basın Change All...:

    resim açıklamasını buraya girin

.İtmsp dosyalarının simgesi bir klasöre değişmeli veya en azından ben öyle düşündüm: maalesef durum böyle değildi. Bu yüzden itmspOpener uygulamasını başka bir yere taşıdım (Masaüstümde geçici bir klasör oluşturdum, oraya ve Masaüstüme geri taşıdım). Finder'daki simge bilgilerini yenileyen:

resim açıklamasını buraya girin

Şimdi bir .itmsp dosyasına çift tıklayın ve klasör olarak açıldığını izleyin:

resim açıklamasını buraya girin


Bu çok etkileyici ... ANCAK bir niggling sorunu var gibi görünüyor: Finder sütun görünümündeyse (tercih edilen görünüm türüm), .itmspklasörde bulunan herhangi bir şey görünmezdir. Nedenini çözemiyorum, ama işte burada. Ayrıca, druthers'ım olsaydı, dosyayı görmek için dosyayı çift tıklamanız gerekmeyecekti, ama iyi.
michaelmichael

1
Haklısın. Binlerce .itmsp klasörü ile uğraşırken bunun mantıklı olduğunu söylemeliyim de, sütun görünümünü kullandığınızı tahmin etmedim. Ancak sorunu çözmenin bir yolunu buldum, yani Finder'ı .itmsp klasörlerini klasör olarak ele almaya zorladım. Düzenlememe bir göz atın (veya doğrudan Çözüm adlı son paragrafa atlayın, ancak önce Tms paragrafında açıklandığı şekilde itmspOpener'in Info.plist'ini değiştirmeyi unutmayın.)
jaume

Inanılmaz! Cevap için teşekkürler. Finder ve OS X'i işaretleyen bazı şeylere çok ilginç bir bakış.
michaelmichael

Teşekkürler, faydalı bulduğunuz için memnunum! (Daha sonra okunabilirliği artırmak ve daha fazla yapı kazandırmak için cevabı düzenleyeceğim.)
jaume

Sonunda cevabı düzenlemek için biraz zaman buldum. Paragrafları yeniden sıraladım ve cevabımda açıklanan çözümün iTunes güncellemelerinden etkilenmediğine dair kanıtlar ekledim.
22'de jaume

7

Seçeneklerden biri Uygulama Yükleyicisinin kaydını silmek olabilir lsregister -u /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/, ancak açılırsa, Başlatma Hizmetleri veritabanı yeniden oluşturulmuşsa veya muhtemelen Xcode güncellenmişse yeniden kaydedilir.

Ayrıca CFBundleDocumentTypes ve UTExportedTypeDeclarations sözlüklerindeki girişleri yorumlayabilir /Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Info.plistve çalıştırabilirsiniz lsregister -f /Applications/Xcode.app/Contents/Applications/Utilities/Application\ Loader.app/. Xcode'un kod imzasını geçersiz kılmaz, ancak güncellemeler tarafından değişikliklerin üzerine yazılabilir.

Lsregister için tam yol /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister10.5 ve sonrasındadır.


Uygulamayı değiştirdikten sonra Info.plistkaydını silmenin plist'ten kaldırdığınız dosya türlerinin kaydını sileceğinden emin misiniz? Çalıştığını hayal edebiliyorum ve kolayca başarısız olduğunu hayal edebiliyorum. çok.
Old Pro

@OldPro Evet, lsregister -u $app && lsregister $appdeğişiklikleri en azından bu durumda bir Info.plist'e uyguluyor gibi görünüyor.
Lri

Bu harika bir cevaptır - Xcode'u bir sonraki sefer yükselttiğinizde, varsayılanı kaydeden bir Uygulama Yükleyici ile sonuçlanabileceğinizi unutmayın, CFBundleDocumentTypesböylece ihtiyacınız olmadığında göründüğünde "aracı" silebilirsiniz ve / veya değiştirmek için lastik.
bmike

2

İşte Apple'ın paketler hakkındaki belgeselinden ilgili bir alıntı ( vurgu eklendi )

Sistem Paketleri ve Paketleri Nasıl Tanımlar?

Aşağıdaki koşullardan herhangi biri doğruysa, Finder bir dizini paket olarak kabul eder:

  • Dizinin bilinen bir dosya adı uzantısı vardır: .app, .bundle, .framework, .plugin, .kext, vb.
  • Dizin, diğer bazı uygulama taleplerinin bir paket türünü temsil ettiği bir uzantıya sahiptir; bkz. “ Belge Paketleri ”.
  • Dizinde paket biti ayarlanmıştır.

Bir paketi belirtmenin tercih edilen yolu, paket dizinine bilinen bir dosya adı uzantısı vermektir. Çoğunlukla, Xcode doğru uzantıyı uygulayan şablonlar sağlayarak sizin için bunu halleder . Tek yapmanız gereken uygun tipte bir Xcode projesi yaratmak.

Neredeyse kesinlikle Xcode, Belge Paketleri'nde.itmsp açıklandığı gibi bir paket türünü temsil ettiğini iddia ediyor . Bu yüzden belki de bu uzantıyı Xcode'dan kaldırmak hile yapar, ancak bu ilişkilendirmenin Finder tarafından not edilmesinden sonra, Xcode'dan kaldırılmasının geri alınmayacağından şüpheleniyorum. "Birlikte Aç ..." seçeneğini sağ tıkladığınızda aldığınız "önerilen uygulamalar" nelerdir? Tüm Info.plistlerini kontrol etmeniz gerekiyor. Info.plist

lsregister -uİddia edilen uygulamaların kaydını silmek için kullanımdan kaçınıp kaçamayacağınızı görmenizi öneririm .itmsp. Aksi takdirde .itmsp, tüm plistlerden kaldırmanız ve ardından tüm bulucu ilişkilendirme veritabanını kullanarak öldürmeniz gerekebilir lsregister -kill -seed. Bunu hiç yapmadım, sisteminizin geri kalanına ne kadar hasar vereceğini söylemeye gerek yok. Muhtemelen kaydını silmek, daha sonra plistleri düzenlemek, ardından veritabanını öldürmek ve yeniden düzenlemek istiyorsunuz. Zaten plist'den kaldırdıysanız, kaydolan kayıt silinmezse beni şaşırtmaz ve yeniden kaldırmadıysanız reseed tekrar ekler. Ayrıca bu şekilde rahatsız edici uygulamalar için diğer tüm ilişkilendirmeleri kaybetmeyeceksiniz.

Daha da kötüsü, Xcode tüm klasörlerde paket bitini ayarlayabilirdi. Sanırım o zaman bir komut dosyası yazmanız GetFileInfove SetFilediski taramanız ve bunları geri almanız gerekir , bu biraz acı verici ama yapılabilir. Parmaklar çapraz demet bitlerini değiştirmeden kalır. GetFileInfoBirkaçını test ederek kontrol etmek için kullanın .


0

Bunu kullanarak çözebileceğine inanıyorum

/usr/bin/SetFile -a B /path/to/file.itmsp

Açıkçası, tüm diğerlerinde denemeden önce birini test edin.

Belirli bir klasörde tümünü çalıştırmak için ihtiyacınız varsa:

find . -name \*.itmsp -exec /usr/bin/SetFile -a B {} \;

sizin için yapmalı.


1
SetFile -a B demet bitini ayarlar . Aslında, özürlü olması gerekir: SetFile -a b. Ancak Has bundlebit ayarlanmadığından bunun bir etkisi olmaz: GetFileInfo -ab foo.itmspdöndürür 0.
jaume
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.