UTIs et services de lancement
Où est stockée la liste des types de fichiers "connus" ?
Le terme officiel pour "types de fichiers" est Identificateurs de type uniforme (UTIs), et la base de données des UTIs est maintenue par Services de lancement .
Utilisation de la Terminal , vous pouvez visualiser le contenu de la base de données des services de lancement à l'aide de la commande lsregister
qui est stocké à :
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister
Au lieu de spécifier ce long chemin à chaque fois que vous voulez exécuter le programme lsregister
vous pouvez ajouter temporairement son répertoire à votre PATH
:
PATH=/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support:"$PATH"
et ensuite vous pouvez exécuter lsregister
en entrant simplement :
lsregister
Pour afficher le contenu de la base de données des services de lancement :
lsregister -dump
Déclarer les nouvelles infections urinaires
Existe-t-il un moyen de faire en sorte qu'OS X reconnaisse les nouveaux types de fichiers ?
Cet article d'Apple, "Déclarer de nouveaux identificateurs de type uniforme" , fournit des informations utiles sur la manière de procéder. Voici le processus complet :
1. Créez une application fictive
Créez une application fictive à enregistrer auprès des services de lancement :
- Ouvrir Éditeur AppleScript (situé dans le dossier Utilitaires dossier).
- Enregistrez un nouveau script vide quelque part (par exemple, sur votre bureau), en définissant son paramètre Format de fichier à Application .
2. Ouvrez son fichier Info.plist
- Localisez votre nouvelle application fictive dans le Finder.
- Cliquez dessus avec le bouton droit de la souris et sélectionnez Contenu de l'emballage du spectacle dans le menu contextuel.
- Ouvrir son Contenu dossier.
- Ouvrez le Info.plist dans un éditeur de texte (ex : TextEdit ).
3. Ajoutez votre nouvelle UTI
Il y a un choix de deux clés :
-
UTExportedTypeDeclarations
- pour vos propres extensions de nom de fichier personnalisées.
-
UTImportedTypeDeclarations
- pour les extensions de nom de fichier qui existent déjà mais qui ne sont pas reconnues par OS X.
Choisissez la clé qui convient le mieux à vos besoins.
Ensuite, dans le Info.plist avant les deux dernières lignes ( </dict></plist>
), ajoutez ce code :
<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>
en effectuant les changements suivants :
- Remplacer
KEY
avec la clé de votre choix (soit UTExportedTypeDeclarations
o UTImportedTypeDeclarations
).
- Remplacer
IDENTIFIER
avec un identifiant reverse-DNS approprié :
- Exporter - Quelque chose comme
com.mycompany.mytype
- Importé - Pour Logiciel id 's Doom WAD un identifiant approprié serait
com.idsoftware.wad
- Remplacer
EXTENSION
avec l'extension du nom de fichier (sans le point de tête), par ex : wad
.
Il s'agit du code minimum nécessaire pour que les services de lancement acceptent votre nouvelle UTI. Vous pouvez également ajouter les propriétés facultatives suivantes :
-
UTTypeConformsTo
- Voir l'annexe ci-dessous.
-
UTTypeDescription
- Une description visible par l'utilisateur, qui sera affichée dans le Finder.
-
UTTypeIconFile
- Si vous ajoutez un Image d'icône d'Apple vers le fichier Contenu/Ressources dans votre application fictive, et ajoutez son nom de fichier dans cette propriété, alors les fichiers qui ont votre nouvelle extension de nom de fichier utiliseront cette icône.
-
UTTypeReferenceURL
- L'URL d'un document de référence décrivant ce type.
Voici un exemple complet montrant toutes les propriétés optionnelles :
<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. Enregistrez votre nouvelle UTI auprès des services de lancement
Exécutez cette commande dans le Terminal :
lsregister <PATH_TO_APP>
remplacement de <PATH_TO_APP>
avec le chemin de votre application fictive, par exemple :
lsregister ~/Desktop/MyDummyApp.app
Si vous créez maintenant un fichier avec votre nouvelle extension de nom de fichier, que vous le sélectionnez dans le Finder et appuyez sur Enter le Finder devrait automatiquement sélectionner uniquement la partie du nom de fichier, et non l'extension.
Si vous visualisez le contenu de la base de données des services de lancement :
lsregister -dump
vous devriez trouver votre nouvelle UTI listée :
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
Si vous souhaitez par la suite désenregistrer votre nouvelle UTI, passez la fonction -u
option pour lsregister
:
lsregister -u ~/Desktop/MyDummyApp.app
Annexe : Hiérarchie et conformité des UTI
OS X déclare une hiérarchie d'UTIs qui sont listées ici : Identificateurs de type uniforme déclarés par le système .
Voici quelques exemples d'infections urinaires dans la hiérarchie :
-
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
Chaque UTI est "conforme" à son UTI mère :
Par exemple, l'UTI public.html
qui définit le texte HTML, est conforme à la norme identificateur de texte de base, public.text
. Dans ce cas, la conformité permet aux applications qui peuvent ouvrir des fichiers texte généraux d'identifier les fichiers HTML comme étant ceux qu'ils peuvent également ouvrir. ( réf. )
Lors de la création d'une nouvelle UTI, il est bon de définir le paramètre UTTypeConformsTo
à l'une des UTIs existantes.
Par exemple, si votre nouvelle UTI est un type de code source, alors vous devez définir l'élément UTTypeConformsTo
à la propriété public.source-code
, de sorte qu'il puisse être ouvert par toutes les applications qui peuvent ouvrir public.source-code
o public.plain-text
o public.text
des fichiers.