2010-07-16 14 views
1

Existe-t-il un outil Unix vers lequel je peux passer un fichier et qui me dit d'où vient l'icône du fichier?D'où vient l'icône?

Ce que je cherche est quelque chose comme ceci:

$ WhoProvidedIcon /Path/To/file.myex

UTI: com.myapplication.document

PLIST:/chemin/vers/myapplication.app/Contents/Info.plist

ICON: /path/to/myapplication.app/Contents/Resources/BaseDoc.icns

+0

La raison pour laquelle j'ai besoin de cela est purement à des fins de débogage. Une icône est assignée à un fichier qui ne devrait pas être assigné et il serait utile de savoir d'où vient exactement l'icône. – ericg

+0

Je peux obtenir une partie de la réponse avec le code: NSString * uti = [ws typeOfFile: @ "/ Utilisateurs/egorr/Bureau/fichier.vwx" erreur: & erreur]; \t NSLog (@ "UTI:% @", uti); Ce dont je ne sais toujours pas, c'est comment obtenir le chemin d'accès à l'icône du fichier. – ericg

+0

Qu'est-ce que vous essayez réellement de faire? Avez-vous _A_ fichier avec des icônes en conflit, ou des charges de fichiers de différentes extensions? Les documents reçoivent leurs icônes attribuées par Finder.app en fonction des informations et des icônes collectées à partir des applications installées sur le système. Si votre objectif est de modifier tous les fichiers VectorWorks, vous devez écrire du code pour tout rassembler.Fichiers vwx, puis utilisez 'setIcon: forFile: options:' sur tous les fichiers, l'écriture de code pour modifier le contenu des autres applications est un peu louche. – theMikeSwan

Répondre

1

Il y a au moins trois endroits différents à partir desquels le système d'exploitation fournira l'icône.

Dans un cas, NSWorkspace peut être utilisé pour aider à identifier l'emplacement:

 
NSString* uti = [ws typeOfFile:@"/Users/egorr/Desktop/file.vwx" error:&error]; 
NSLog(@"UTI: %@", uti); 
NSLog(@"UTI localized description: %@", [ws localizedDescriptionForType:uti]); 
NSLog(@"UTI error description: %@",[error localizedDescription]); 
NSURL* utiDeclarationURL = (NSURL*)UTTypeCopyDeclaringBundleURL((CFStringRef)uti); 
NSLog(@"UTI declaration URL: %@", utiDeclarationURL); 
NSDictionary* utiDeclaration = (NSDictionary*)UTTypeCopyDeclaration((CFStringRef)uti); 
NSLog(@"UTI declaration: %@", utiDeclaration); 

Ce ne sera pas tout à fait obtenir le chemin de l'icône, mais il obtiendra une application à partir de laquelle la déclaration est venue pour l'UTI.

Une icône peut également être fournie à partir d'un plug-in Quick Look et la sortie de qlmanage peut être utilisée pour déterminer si c'est le cas.

Un utilisateur peut, dans la fenêtre Obtenir des infos du Finder, définir l'application qu'il préfère pour tous les fichiers d'un "type" donné. On peut définir des types de fichiers texte à toujours ouvrir dans TextMate, par exemple. TextMate l'application fournit des icônes de fichiers personnalisés pour tous les types de fichiers dans lesquels elle peut enregistrer. Après avoir effectué cette modification dans les fenêtres d'informations du Finder, tous les fichiers de ce type auront une icône fournie par TextMate et enregistrée avec UTI. Pour déterminer si c'est le cas, il faudrait regarder la base de données des services de lancement - lsregister -dump

2

icônes pour la plupart des applications sur un Mac OSX re stockés dans le regroupement d'applications eux-mêmes. Si vous faites un clic droit sur le .app, puis sélectionnez Show Package Contents puis allez à Contents -> Resources vous devriez voir l'icône là-bas.

+0

Merci, mais je n'étais pas assez clair. J'ai édité ma question. – ericg

0

Je ne connais pas d'outils spécifiques qui fournissent cette information. Cependant, il semble que vous ayez des extensions qui se chevauchent. Si Finder.app affiche une icône pour un fichier, vous devriez pouvoir regarder dans la fenêtre d'information du fichier et voir quelle application est listée pour ouvrir le document par défaut. Regardez ensuite le fichier .plist pour cette application pour voir s'il utilise votre extension. La fenêtre d'information devrait également indiquer le type de document qui pourrait être utile si l'application qui fournit l'icône a été supprimée ou n'est pas répertoriée comme application par défaut.

+0

Ce n'est pas si simple. Il existe plusieurs versions de la même application, toutes revendiquant la même extension. Il est possible que l'un d'entre eux soit devenu corrompu, mais je ne pense pas que le chercheur va me dire lequel, si c'est effectivement le cas. Par conséquent, le besoin potentiel d'un outil pour me dire d'où le chercheur a effectivement obtenu l'icône pour le fichier. – ericg