2010-10-20 4 views
3

J'essaie d'ouvrir le Finder dans un certain paquet.Cocoa - Open File Package dans le Finder

J'ai obtenu ce fichier, Example.backup, qui est juste un dossier avec une extension. Dans le viseur, vous pouvez cliquer dessus avec le bouton droit de la souris (Afficher le contenu du paquet) et les fichiers me seront présentés. (il n'y a pas de dossier Contenu).

J'ai essayé de l'ouvrir avec les méthodes de NSWorkspace mais aucun n'ouvre le finder dans ce répertoire, ils sélectionnent le fichier ou l'ouvrent avec le programme associé.

Y at-il un moyen de le faire dans AppleScript peut-être? Ou du cacao?

Merci

Répondre

2

Comme personne ne répondait encore, il pourrait ne pas être une solution d'une ligne. Tout ce que je pouvais penser était une solution de contournement: appelez/usr/bin/open avec l'option -R, qui révélera le fichier donné dans le Finder. Puisque vous voulez montrer le contenu du paquet, vous devrez révéler n'importe quel dossier qui est dedans (pas le paquet lui-même). Les inconvénients: ne fonctionneront pas sur le paquet vide (mais alors vous pourriez juste révéler le paquet), aussi la fenêtre du Finder montrera une sélection sur le dernier article.

NSString *pathToBundle = @"/tmp/test.app"; 
NSFileManager *fm = [[[NSFileManager alloc] init] autorelease]; 

// get the last file/directory in the package 
// TODO: error handling/empty package 
NSString *lastItemInBundle = [[fm contentsOfDirectoryAtPath:pathToBundle error:NULL] lastObject]; 

// reveal this file in Finder, by using /usr/bin/open 
// see -R option in the manpage 
NSTask *open = [[[NSTask alloc] init] autorelease]; 
[open setLaunchPath:@"/usr/bin/open"]; 
[open setCurrentDirectoryPath:pathToBundle]; 
[open setArguments:[NSArray arrayWithObjects:@"-R", lastItemInBundle, nil]]; 
[open launch]; 
+0

NSWorkspace fait cela aussi. C'est dommage qu'Apple n'ait pas pensé à modifier NSWorkspace pour ouvrir des paquets aussi. – Pripyat

+0

Je veux aussi faire la même chose mais ce code ne fonctionne pas pour moi. Son Finder d'ouverture avec le fichier .app sélectionné. Avez-vous trouvé du travail pour résoudre ce problème? – iVipS

+0

Au moment de la réponse, le code fonctionnait correctement. Que se passe-t-il si vous essayez simplement le bit Finder ouvert sur la ligne de commande, '/ usr/bin/open -R /path/to/yourapp.app/yourfile'? –

Questions connexes