OSX: Свяжите определенные папки с приложением, которое я разрабатываю.

Мне нужно связать определенные папки с моим приложением, чтобы запустить приложение двойным щелчком по папке, как если бы это была папка пакета. У этих папок даже должен быть собственный значок.

Мне удалось добиться этого, предоставив папке с расширением и настроив часть типа документа в Info.plist файле приложения.

К сожалению, я не хочу добавлять расширение к папке, я хочу связать с моим приложением обычные папки. Чтобы быть точным, я хочу связать каждую папку, которая содержит подпапку под названием «Подпапка» (например).

Есть ли способ добиться этого?


person Andrea3000    schedule 04.03.2012    source источник
comment
Похоже, это сбивает пользователя с толку. Я не думаю, что можно ожидать, что дважды щелкнет обычную папку в Finder и запустит внешнее приложение.   -  person sbooth    schedule 04.03.2012
comment
@sbooth: Это может быть правдой, но если в папке есть собственный значок, который позволяет избежать этой путаницы, я думаю, что это можно сделать. Вы так не думаете?   -  person Andrea3000    schedule 04.03.2012
comment
Нет. Папка - это папка, и ее обработка в противном случае нарушила бы работу пользователя Mac.   -  person Rob Keniger    schedule 05.03.2012


Ответы (1)


Вы не должны этого делать (с точки зрения пользовательского опыта), и вы не можете этого делать (с технической точки зрения, если вы не рассматриваете вариант установки исправления для Finder).

Чего вы на самом деле пытаетесь достичь? Будет ли работать создание пакета / пакета и скрытие расширения пути? Вы можете сделать это с помощью NSFileManager:

NSString *path = …;
NSDictionary *attributes = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:NSFileExtensionHidden];
NSError *error = nil;
[[NSFileManager defaultManager] setAttributes:attributes ofItemAtPath:path error:&error];

Чтобы связать существующую папку с вашим приложением, вы можете переименовать папку, чтобы иметь расширение пути к файлу вашего пакета.

person gcbrueckmann    schedule 04.03.2012
comment
Спасибо за ответ. К сожалению, я не могу принять решение, которое вы предлагаете, потому что мне нужно выполнить ассоциацию папки с приложением даже на дисках только для чтения. Я пытаюсь достичь следующего: мое приложение обрабатывает структуру файлов, размещенных в стандартной структуре папок. Я хочу дважды щелкнуть основную папку, содержащую всю структуру файлов и папок, и запустить приложение. - person Andrea3000; 04.03.2012
comment
Вы можете сделать это, не давая папке расширение файла, установив бит пакета папки, который заставит Finder видеть папку как один файл. iPhoto делает это с помощью папки iPhoto Library. Я объясняю, как установить бит пакета, в моем ответе на этот вопрос. - person Rob Keniger; 05.03.2012
comment
Но в таком случае пакет все равно не откроется в вашем приложении, или я ошибаюсь? Кроме того, этот метод не будет работать с томами, доступными только для чтения. - person gcbrueckmann; 05.03.2012
comment
@RobKeniger: Спасибо за вашу помощь, но я ищу решение, которое не требует модификации папки. - person Andrea3000; 06.03.2012