2010-10-20 6 views
3

Я пытаюсь открыть Finder в определенном пакете.Cocoa - Открыть пакет файлов в Finder

Я получил этот файл, Example.backup, который является просто папкой с расширением. В поисковом устройстве вы можете щелкнуть правой кнопкой мыши (Показать содержимое пакета), и мне будут представлены файлы. (папка с содержимым отсутствует).

Я пробовал открывать его с помощью методов NSWorkspace, но ни один из них не открывал finder в этом каталоге, они либо выбирают файл, либо открывают его с помощью связанной программы.

Есть ли способ сделать это в AppleScript, может быть? Или какао?

Благодаря

ответ

2

Поскольку никто не ответил еще, что не может быть решением одна линия.

Все, что я мог придумать, было обходным путем: call/usr/bin/open с опцией -R, которая откроет данный файл в Finder. Поскольку вы хотите показать содержимое пакета, вам нужно будет открыть любой файл, который находится внутри (а не сам пакет).

Недостатки: не будет работать на пустой пакет (но тогда вы могли бы просто открыть пакет), также окно Finder отобразит выбор на последнем элементе.

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 делает это тоже. Жаль, что Apple не думала об изменении NSWorkspace, чтобы открывать пакеты. – Pripyat

+0

Я тоже хочу сделать то же самое, но этот код не работает для меня. Его открытие Finder с выбранным .app-файлом. Вы нашли работу, чтобы решить эту проблему? – iVipS

+0

Во время ответа код работал правильно. Что произойдет, если вы просто попробуете открытый бит Finder в командной строке, '/ usr/bin/open -R /path/to/yourapp.app/yourfile'? –

Смежные вопросы