Revert Filetype Association

12

Je travaille occasionnellement avec des packages iTunes Music Store. Ces packages ont une .itmspextension. Comme .app, .itmspest essentiellement un répertoire de conteneurs. .itmsples dossiers contiennent du XML et des fichiers multimédias.

La dernière mise à jour de Xcode et / ou Mac OS X (Xcode 4.6.1 sur Mac OS 10.8.3) a détourné l'association de type de fichier pour les répertoires avec l' .itmspextension. Auparavant, ils étaient traités comme des dossiers normaux - aucun double-clic requis pour voir à l'intérieur. Maintenant, je dois double-cliquer dessus pour interagir avec eux. Quand je le fais, un programme appelé Application Loader essaie de les ouvrir. Pour voir l'intérieur, je dois cliquer avec le bouton droit et sélectionner "Afficher le contenu du paquet". Je traite des milliers de ces fichiers à un moment donné, donc cela ne fonctionnera pas.

J'ai essayé de modifier ou de supprimer l'association de type de fichier à l'aide de Get Info et de RCDefaultApp. Ni l'un ni l'autre ne fonctionne. La suppression de l'association de type de .itmspfichier transforme simplement les répertoires en fichiers vides. Il en va de même pour la suppression complète d'Application Loader.app. Dans les deux cas, je ne peux toujours pas parcourir le contenu sans cliquer avec le bouton droit.

La réponse précédemment acceptée a fonctionné pendant un certain temps: lsregister -u /Applications/Contents/Applications/Application\ Loader.app/elle ne fonctionne plus depuis que j'ai mis à jour Xcode et / ou Mac OS X. Si Xcode est installé, vous devriez pouvoir le tester vous-même en nommant un répertoire foo.itmsp.

Comment puis-je faire en sorte que les .itmspfichiers soient à nouveau traités comme des dossiers?

michaelmichael
la source
Avez-vous essayé de glisser-déposer un fichier sur l'icône de l'application Xcode et de voir s'il fait ce que vous voulez?
MrDaniel
Merci pour la suggestion. Ce n'est pas pertinent pour le problème en question, je vais donc essayer de modifier ma question pour clarifier mon intention.
michaelmichael
1
Quelle version d'OS X utilisez-vous? Quelle version de Xcode?
Old Pro
J'ai supprimé ma réponse qui a supprimé les types des CFBundleDocumentTypes et tué sur la base de données du service de lancement. Cela fonctionne pendant un certain temps mais il semble se réaffirmer à un moment donné plus tard. ??
markhunte

Réponses:

11

Le problème: les dossiers .itmsp sont affichés sous forme de fichiers

Le Finder traite les dossiers .itmsp comme des packages , c'est-à-dire comme s'il s'agissait d'un seul fichier. Par exemple, en mode colonne, tout ce qui est contenu dans le dossier .itmsp est invisible, seule l'icône du document est affichée:

entrez la description de l'image ici

Le Finder considère un répertoire comme un package si l'une des conditions suivantes est remplie (du Bundle Programming Guide ):

  1. Le répertoire a une extension de nom de fichier connue: .app, .bundle, .framework, .plugin, .kext, etc. (comme défini dans /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist. Il s'agit d'une liste binaire, ouvrez-la avec Xcode:) open -a Xcode Info.plist.

  2. Le répertoire a une extension que certaines autres revendications d'application représentent un type de package (recherchez com.apple.packagedans la sortie de mdls -name kMDItemContentTypeTree <foldername>pour le savoir.)

  3. Le répertoire a son bit de package défini (s'il GetFileInfo -ab <foldername>retourne 1, il est défini.)

Le cas 2. s'applique aux dossiers .itmsp: Application Loader.appexporte le type com.apple.itunes-producer.itmspet le définit pour se conformer à 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>

Une solution: re-déclarer le type com.apple.itunes-producer.itmsp

Une solution consisterait à re-déclarer le type com.apple.itunes-producer.itmspet l'extension en itmsptant que dossier et à forcer Launch Services à utiliser la déclaration de type modifiée.

Note importante:

Bien qu'elle résout de manière fiable le problème de l'OP, la solution proposée, lorsqu'elle est appliquée à d'autres packages, ne les affiche pas sous forme de dossiers.

J'ai découvert que la solution proposée semble fonctionner uniquement avec les types de fichiers déclarés par les applications situées dans un chemin d'application non standard.

C'est le cas de Application Loader.app, qui se trouve à /Applications/Xcode.app/Contents/Applications/.

Si vous êtes intéressé par une solution partielle, vérifiez la fin de cette réponse.

Pour que les dossiers .itmsp soient affichés en tant que dossiers par le Finder, procédez comme suit:

  1. Ouvrez Automator dans le dossier Applications et sélectionnez Application :

    entrez la description de l'image ici

  2. Sélectionnez Utilitaires dans la liste Bibliothèque, sélectionnez Exécuter le script Shell et faites-le glisser vers le volet de droite:

    entrez la description de l'image ici

  3. Remplacez le contenu du script par défaut par exit 0:

    entrez la description de l'image ici

  4. Enregistrez l'application sous itmspOpener:

    entrez la description de l'image ici

  5. Fermez Automator.

  6. Sélectionnez itmspOpener.appet affichez son contenu:

    entrez la description de l'image ici

  7. Localisez Contents> Info.plist et ouvrez-le avec votre éditeur préféré:

    entrez la description de l'image ici

  8. Remplacez ces sections dans 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>
    

    Remarque: pourquoi kUTTypeDirectoryau lieu de public.directorydedans UTExportedTypeDeclarations? Dans la documentation d'Apple : Important: lorsque vous utilisez des UTI définies par le système dans votre code, vous devez utiliser les constantes définies dansUTCoreTypes.h dans le framework Launch Services lorsqu'elles sont disponibles, plutôt que les chaînes UTI réelles. Par exemple, passez kUTTypeApplication plutôt que «com.apple.application». «System-Declared Uniform Type Identifiers» répertorie ces constantes en plus des chaînes UTI.

  9. Associez un fichier .itmsp à itmspOpeneret appuyez sur le bouton Change All...:

    entrez la description de l'image ici

  10. Réinitialisez la base de données Launch Services:

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

    (sous OS X 10.8 lsregister se trouve dans /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/.)

  11. Créez un dossier .itmsp et répertoriez ses propriétés:

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

    Étant donné que la base de données Launch Services a été réinitialisée, le Finder affiche désormais les dossiers .itmsp en tant que dossiers.

  12. Ouvrez itmspOpener.apppour charger son fichier plist et vous inscrire com.apple.itunes-producer.itmsp:

    $ open ~/Desktop/itmspOpener.app
    
  13. Début Application Loader.app:

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

    Le dossier foo3.itmspdoit toujours être affiché en tant que dossier.

  14. Vérifiez à nouveau les propriétés du dossier:

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

    com.apple.package n'a pas été ajouté aux attributs de métadonnées du dossier, c'est pourquoi le Finder affiche toujours les dossiers .itmsp en tant que dossiers!

Solution automatisée: affichage des dossiers .itmsp en tant que dossiers après la connexion

Pour afficher les dossiers .itmsp en tant que dossiers après la connexion:

  1. Créez itmspOpener.appet modifiez son Info.plistcomme décrit ci-dessus.

  2. Créez /usr/local/bin/itmspTypeLoaderavec ce contenu (la variable itmspOpenerpointe vers l'emplacement où itmspOpener.appréside, modifiez si nécessaire):

    #!/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
    

    Les deux sleep 15avant et après l' exécution lsregistersont d' une importance capitale. Si vous ne voyez pas le résultat souhaité, essayez différents délais.

  3. Créez /usr/local/bin/itmspTypeLoaderLauncheravec ce contenu:

    #!/bin/bash
    
    # $1 returns the short name of the user who is logging in
    su - $1 -c /usr/local/bin/itmspTypeLoader &
    
  4. Définissez les deux scripts exécutables:

    $ sudo chmod a+x /usr/local/bin/itmspTypeLoader /usr/local/bin/itmspTypeLoaderLauncher 
    
  5. Définir /usr/local/bin/itmspTypeLoaderLaunchercomme hook de connexion :

    $ sudo defaults write com.apple.loginwindow LoginHook /usr/local/bin/itmspTypeLoaderLauncher
    
  6. Redémarrez pour que les modifications prennent effet. Une fois connecté, vous devriez voir ceci:

    entrez la description de l'image ici

    et lsregister -dumpdevrait révéler que itmspOpener.app« UTExportedTypeDeclarationsa priorité sur Application Loader.app»:

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

    Voyez-vous l' inactiveindicateur défini dans l'exportation de type d'Application Loader.app? Nous avons vaincu Application Loader.

Le test acide: les dossiers .itmsp s'affichent toujours comme tels après la mise à jour d'iTunes

J'ai récemment mis à jour Xcode:

entrez la description de l'image ici

et peut confirmer que les dossiers .itmsp ont été affichés en tant que dossiers lors de la mise à jour:

entrez la description de l'image ici

et après:

entrez la description de l'image ici

Une solution partielle: le package affichera le contenu lors d'un double clic

Comme indiqué précédemment, la procédure détaillée ci-dessus ne fonctionnera pas avec les dossiers arbitraires affichés sous forme de packages par le Finder.

Cependant, si vous souhaitez simplement pouvoir double-cliquer sur un package pour l'ouvrir, il existe un moyen de le faire avec un bashscript et Automator:

  • Le script crée un dossier temporaire masqué à l'intérieur du package, le révèle dans le Finder (révélant ainsi le package en tant que dossier), puis supprime le dossier temporaire.

    Remarque:

    Le script pourrait plutôt créer un fichier temporaire masqué. Cependant, je préfère créer un dossier car rmdirne supprime que les dossiers vides , tout en rmsupprimant tout fichier, donc si, pour une raison quelconque. le script fait des ravages, seuls les dossiers vides seront supprimés, ce qui n'est probablement pas aussi mauvais que si les fichiers étaient supprimés.

  • Automator regroupe le script dans une application qui sera associée aux fichiers de package.

Ce sont les étapes pour créer une telle application. Je vais utiliser les fichiers .itmsp comme exemple de type de package dans l'explication ci-dessous:

  1. Ouvrez Automator dans le dossier Applications et sélectionnez Application :

    entrez la description de l'image ici

  2. Sélectionnez Utilitaires dans la liste Bibliothèque, sélectionnez Exécuter le script Shell et faites-le glisser vers le volet de droite:

    entrez la description de l'image ici

  3. Set entrée passe à comme arguments :

    entrez la description de l'image ici

  4. Remplacez le contenu du script par défaut par ceci:

    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. Enregistrez l'application sous itmspOpener:

    entrez la description de l'image ici

  6. Fermez Automator.

Vous disposez maintenant d'une application qui peut ouvrir des fichiers .itmsp en tant que dossiers si elle y est associée.

Il y a un problème cosmétique: en l'état, les fichiers associés auront l'icône de document blanc standard:

entrez la description de l'image ici

Corrigeons cela aussi:

  1. Assurez-vous que Automator est fermé.

  2. Sélectionnez itmspOpener et affichez son contenu:

    entrez la description de l'image ici

  3. Localisez Contents> Info.plist et ouvrez-le avec votre éditeur préféré:

    entrez la description de l'image ici

  4. Remplacez la valeur de cette clé dans le CFBundleDocumentTypestableau:

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

    et ajoutez cette clé:

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

    Maintenant, la section ressemble à ceci:

    entrez la description de l'image ici

  5. Basculez vers le Finder, sélectionnez un dossier, appuyez sur I, sélectionnez l'icône de dossier dans le coin supérieur gauche et copiez-la avec C:

    entrez la description de l'image ici

  6. Ouvrez Aperçu et sélectionnez Fichier> Nouveau dans le presse-papiers. Enregistrez le fichier sous folder.icns:

    entrez la description de l'image ici

  7. Copier folder.icnsà itmspOpener/Contents/Resources:

    entrez la description de l'image ici

  8. Associez un fichier .itmsp à itmspOpeneret appuyez sur le bouton Change All...:

    entrez la description de l'image ici

L'icône des fichiers .itmsp devrait changer dans un dossier, ou du moins je le pensais: malheureusement, ce n'était pas le cas. J'ai donc déplacé l'application itmspOpener vers un autre emplacement (j'ai créé un dossier temporaire sur mon bureau, je l'ai déplacé là-bas et de nouveau sur mon bureau). Cela a actualisé les informations d'icône dans le Finder:

entrez la description de l'image ici

Maintenant, double-cliquez sur un fichier .itmsp et regardez-le s'ouvrir en tant que dossier:

entrez la description de l'image ici

jaume
la source
C'est très impressionnant ... MAIS il semble y avoir un problème insignifiant: si le Finder est en vue colonne (mon type de vue préféré), tout ce qui est contenu dans le .itmspdossier est invisible. Je ne peux pas comprendre pourquoi, mais ça y est. De plus, si j'avais mes druthers, vous n'auriez pas à double-cliquer sur le fichier pour voir à l'intérieur, mais bon.
michaelmichael
1
Tu as raison. Je ne m'attendais pas à ce que vous utilisiez la vue en colonnes, même si je dois dire que cela est parfaitement logique lorsque vous traitez des milliers de dossiers .itmsp. Mais j'ai trouvé un moyen de résoudre le problème, c'est-à-dire de forcer le Finder à traiter les dossiers .itmsp comme des dossiers. Jetez un œil à ma modification (ou passez directement au dernier paragraphe intitulé La solution, mais n'oubliez pas de modifier d'abord Info.plist d'itmspOpener comme décrit dans le paragraphe L'astuce.)
jaume
Incroyable! Merci d'avoir répondu. Ceci est un aperçu très intéressant de certaines des choses qui font fonctionner le Finder et OS X.
michaelmichael
Merci, je suis content que vous l'ayez trouvé utile! (Je modifierai la réponse plus tard pour améliorer la lisibilité et lui donner plus de structure.)
jaume
J'ai finalement trouvé le temps de modifier la réponse. J'ai réorganisé les paragraphes et ajouté des preuves que la solution expliquée dans ma réponse est immunisée contre les mises à jour iTunes.
jaume
7

Une option serait de désinscrire Application Loader avec lsregister -u /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/ , mais il est enregistré à nouveau s'il est ouvert, si la base de données Launch Services est reconstruite, ou éventuellement si Xcode est mis à jour.

Vous pouvez également commenter les entrées dans les dictionnaires CFBundleDocumentTypes et UTExportedTypeDeclarations dans /Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Info.plistet exécuter lsregister -f /Applications/Xcode.app/Contents/Applications/Utilities/Application\ Loader.app/. Cela n'invalide pas la signature de code de Xcode, mais les modifications pourraient être écrasées par les mises à jour.

Le chemin complet vers lsregister est /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregisteren 10.5 et versions ultérieures.

Lri
la source
Êtes-vous sûr que le désenregistrement de l'application après avoir changé son Info.plistannulera l'enregistrement des types de fichiers que vous avez supprimés de la liste? Je peux l'imaginer fonctionner et je peux facilement imaginer qu'il échoue. aussi.
Old Pro
@OldPro Oui, lsregister -u $app && lsregister $appsemble-t-il appliquer les modifications à un Info.plist au moins dans ce cas.
Lri
Ceci est une réponse fabuleuse - gardez à l'esprit que la prochaine fois que vous mettez à niveau Xcode - vous pouvez vous retrouver avec un chargeur d'application qui enregistre la valeur par défaut CFBundleDocumentTypes, vous pouvez donc simplement supprimer cet "outil" lorsqu'il apparaît si vous n'en avez pas besoin et / ou fatigué de le modifier.
bmike
2

Voici un extrait pertinent de la documentation d'Apple sur les offres groupées (non souligné dans l'original )

Comment le système identifie les bundles et les packages

Le Finder considère un répertoire comme un package si l'une des conditions suivantes est remplie:

  • Le répertoire a une extension de nom de fichier connue: .app, .bundle, .framework, .plugin, .kext, etc.
  • Le répertoire a une extension que certaines autres revendications d'application représentent un type de package; voir « Packages de documents ».
  • Le répertoire a son bit de package défini.

La manière préférée de spécifier un package est de donner au répertoire du package une extension de nom de fichier connue. Pour la plupart, Xcode s'occupe de cela pour vous en fournissant des modèles qui appliquent l'extension correcte. Il vous suffit de créer un projet Xcode du type approprié.

Il est presque certain que Xcode représente qu'il prétend .itmspreprésenter un type de package, comme décrit dans Packages de documents . Alors peut-être que supprimer cette extension de Xcode Info.plistfera l'affaire, mais je soupçonne qu'une fois que cette association a été notée par le Finder, la supprimer de Xcode ne l'annulera pas. Quelles sont les "applications recommandées" que vous obtenez lorsque vous cliquez avec le bouton droit sur "Ouvrir avec ..."? Vous devez vérifier tous leurs Info.plists.

Je suggère de voir si vous pouvez vous permettre lsregister -ude désinscrire toutes les applications revendiquées .itmsp. Sinon, vous devrez peut-être supprimer .itmspde tous les plists, puis tuer toute la base de données d'association de recherche à l'aide de lsregister -kill -seed. Je n'ai jamais fait ça, je ne dis pas combien de dégâts cela fera au reste de votre système. Vous souhaitez probablement vous désinscrire, puis modifier les listes, puis tuer et réamorcer la base de données. Je ne serais pas surpris si l'annulation de l'inscription ne supprime pas l'association si vous l'avez déjà supprimée de la liste, et la réamorçage la rajoutera si vous ne l'avez pas encore supprimée. De plus, vous ne perdrez pas toutes les autres associations pour les applications incriminées.

Pire encore, Xcode aurait pu passer et définir le bit de bundle sur tous les dossiers. Je suppose que vous devrez alors écrire un script en utilisant GetFileInfoet SetFilepour analyser le disque et les défaire, ce qui est une sorte de douleur, mais faisable. Les doigts croisés sur les bits du paquet restent non réglés. Utilisez GetFileInfopour vérifier en testant quelques-uns.

Old Pro
la source
0

Je pense que vous pouvez résoudre ce problème en utilisant

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

Testez-le sur un avant de l'essayer sur tous les autres, évidemment.

Si vous en avez besoin pour tous les exécuter dans un dossier donné:

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

devrait le faire pour vous.

TJ Luoma
la source
1
SetFile -a B définit le bit de paquet. En fait, il devrait être désactivé: SetFile -a b. Mais cela n'aura aucun effet puisque le Has bundlebit n'est pas positionné: GetFileInfo -ab foo.itmspretourne 0.
2013