Название: Разборки с info.plist Отправлено: Igors от Ноябрь 08, 2020, 14:17 Добрый день
Такую тему я уже создал, но, поскольку, увы, все свалилось в нативняк, лучше продолжить здесь. Требуется чтобы Finder по Cmd+I (в панели More Info) отображал инфу которая записывается приложением. Это называется "extended file attributes" и, как я убедился, используется очень широко. Привлекает что файл (содержимое) не трогается, ОС хранит записанные metadata как внешние. Отпадает необходимость в каких-то плагинах (иначе как ОС эту инфу покажет?). Сама запись работает "с пол-пинка" как из командной строки (xattr) так и в runtime (setxattr). Однако метаданных "туева хуча", и ясно что отображать их все Finder не сможет. Нужно как-то задать "какие", причем там 2 варианта (для Finder'a и SpotLight'а). Теперь собсно Info.plist, никогда им не занимался, ну вот пришлось лезть. Для минимального ф-ционала (который обычно и нужен) - все прекрасно. Добавляем нужные расширения в секцию "Document Types", туда же имя своей иконки (из своих ресурсов) и ОС тип файла - все бычит, файлы показываются с нашей иконкой и по dbl-click или (Cmd+O) открываются нашим приложением. Причем даже если др приложение юзает то же расширение (видимо спасает OSType) А вот инфу (метаданные) Finder просто так не показывает :'( Вернее показывает для стандартных расширений типа .png или .tga (видимо др приложение(я) подсуетилось). А вот для расширения .img - нет. Оно используется др приложением (как-то DiskMounter). но видимо оно нужный мета-айтем kMDTitlle не поддерживает. Ну ладно, "пытаюсь разобраться" :) В Info.plist создал "Exported Type UTI(s)", понял так что это мы, мол, заявляем что "вот эта корова (файл с таким-то расширением и типом) наша" и присваиваем ему UTI (идентификатор типа, строка напр "com.mycompany,myapp"), а по этой уте (ууути-ути-ути) товарищи Finder и SpotLight уже разбираются с метаданными. Так, ну и для злополучного .img ни фига это не работает :'( Утилита mdls показывает что мое UTI файлу не присвоено, стоит то что поставил DiskMounter (com.apple.disl-image-ndif). Есть еще "Imported Type UTI(s)" как его юзать - хз. В общем - застрял. Есть познания и/или мысли? Спасибо Название: Re: Разборки с info.plist Отправлено: kambala от Ноябрь 09, 2020, 14:19 Ну ладно, "пытаюсь разобраться" :) В Info.plist создал "Exported Type UTI(s)", понял так что это мы, мол, заявляем что "вот эта корова (файл с таким-то расширением и типом) наша" и присваиваем ему UTI (идентификатор типа, строка напр "com.mycompany,myapp"), а по этой уте (ууути-ути-ути) товарищи Finder и SpotLight уже разбираются с метаданными. первые же ссылки из поиска дают всю необходимую инфу по этим полям:Так, ну и для злополучного .img ни фига это не работает :'( Утилита mdls показывает что мое UTI файлу не присвоено, стоит то что поставил DiskMounter (com.apple.disl-image-ndif). Есть еще "Imported Type UTI(s)" как его юзать - хз. - https://stackoverflow.com/questions/24958021/document-types-vs-exported-and-imported-utis - https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/understanding_utis/understand_utis_declare/understand_utis_declare.html еще можно посмотреть как другие приложения их описывают. без минимального примера никто смотреть, скорее всего, не будет :) Название: Re: Разборки с info.plist Отправлено: Igors от Ноябрь 09, 2020, 15:16 Ну я знал кто ответит :)
первые же ссылки из поиска дают всю необходимую инфу по этим полям: :) Ну почему Вы полагаете что я даже не смотрел первые же ссылки, а сразу полез на форум спрашивать? "У кого глупость других не вызывает удивления?" :)без минимального примера никто смотреть, скорее всего, не будет :) А минимальный пример у Вас "в кармане". ТребуетсяДля файла с расширением .img в окне Finder'а, панели "More Info" показать Цитировать Title: kambala И, как я понял, такой возможности (почти) нет :'( Вот с каким-то своим расширением - пожалуйста. Для img можно вместо "Title" показать "Where From" или "Kind" - пожалуйста, но не более того. "Почти" - ну может это решается кастомным импортером. Та це вже занадто :'( Название: Re: Разборки с info.plist Отправлено: kambala от Ноябрь 09, 2020, 15:55 Ну почему Вы полагаете что я даже не смотрел первые же ссылки, а сразу полез на форум спрашивать? а потому что не видно попыток решения в виде кода или отрывков Info.plist ;)А минимальный пример у Вас "в кармане" описательно минимальный пример ясен, конечно. тем не менее, у вас уже есть некоторые наработки, которые можно было бы оформить в виде компилируемого примера, от которого и плясать, а не проделывать все то же самое с нуля, особенно с учетом отсутствия опыта именно с данной темой :)Название: Re: Разборки с info.plist Отправлено: Igors от Ноябрь 10, 2020, 10:50 описательно минимальный пример ясен, конечно. тем не менее, у вас уже есть некоторые наработки, которые можно было бы оформить в виде компилируемого примера, от которого и плясать, а не проделывать все то же самое с нуля, особенно с учетом отсутствия опыта именно с данной темой :) Думаю здесь выкладывать какие-то файлы неэффективно. Ну ладно, давайте "по шагам"1) Добавим нужные метаданные a) В TextEdit создадим файл, напр test1.rtf, содержимое не имеет никакого значения b) В Terminal запишем метаданные Цитировать xattr -w com.apple.metadata:kMDItemTitle kambala <path/to/file> c) Убедимся что записалиЦитировать xattr -l <path/to/file> d) В Finder'е возьмем инфу файла, все хорошо, в панели "More Info" есть "Title: kambala"Теперь в том же окне инфы изменим расширение с .rtf на .img. Увы, title исчезнет. 2) Откроем любой проект в Xcode (напр один из примеров Qt, любой лишь бы это было приложение с Ui, а не утилита командной строки). В установках проекта, таба Info добавим новый документ (аттач). Разумеется можно использовать редактор plist или любой другой Запустим приложение и выйдем из него. Смотрим переименованный test1.img. Да, наше приложение (по меньшей мере) попало в список открывающих img файл, можно добиться и своей иконки и Kind. Но "Title: kambala" нету. Ну и собсно все. Да, неск дней я читал и экспериментировал с Exported/Imported UTIs (что после Document Types), но это ни к чему не привело (titlle в Finder'e нет), делиться мне просто нечем :) Название: Re: Разборки с info.plist Отправлено: kambala от Ноябрь 10, 2020, 11:27 больше похоже, что это как-то связано именно с образами диска, ибо та же история с файлом dmg. При этом, если переименовать в какой-нибудь log или md, то атрибут по-прежнему виден в файндере. Вроде ничего особенного не объявлено в /System/Library/CoreServices/DiskImageMounter.app/Contents/Info.plist ...
разве что только попробовать написать свой QL плагин, который будет отображать любые кастомные данные :) Название: Re: Разборки с info.plist Отправлено: Igors от Ноябрь 10, 2020, 12:16 больше похоже, что это как-то связано именно с образами диска, ибо та же история с файлом dmg. Думаю конкретно "образы диска" здесь ни при чем. Если расширение img ассоциируются со своим UTI (com.apple.disk-image-ndif), то отбор атрибутов (метаданных) для SpotLight и Finder'a будет выполняться плагинами что понимают эту утю - а их нетЦитировать mdimport -n - d1 <path/test1.img> Остаются только дефаулты (Where From и Keywords), они всегда покажутся Правда не понял почему "Imported UTI" не имеет эффекта. По смыслу вроде "оно", указываю идентификатор = com.apple.disk-image-ndif и "Conform to UTI" = public.rtf. Не бычит :'( разве что только попробовать написать свой QL плагин, который будет отображать любые кастомные данные :) Скорее всего да, но это уже вопрос "другого порядка", здесь речь о том можно ли обеспечить показ юзая только info.plist, без написания кода. Выходит для "уже занятых" нельзя :'(Название: Re: Разборки с info.plist Отправлено: kambala от Ноябрь 10, 2020, 13:50 Правда не понял почему "Imported UTI" не имеет эффекта. По смыслу вроде "оно", указываю идентификатор = com.apple.disk-image-ndif и "Conform to UTI" = public.rtf. Не бычит :'( а почему Conform должен быть на ртф? там же изначально образ диска. Сомневаюсь, что простая смена расширения влияет на зашитый UTI.вот пример: я сначала создал dmg, потом сменил расширение. что показывает path finder: Название: Re: Разборки с info.plist Отправлено: Igors от Ноябрь 11, 2020, 10:38 вот пример: я сначала создал dmg, потом сменил расширение. что показывает path finder: О path finder ничего не слышал. Выложите Ваш asd файл (в zip). Спасибоа почему Conform должен быть на ртф? там же изначально образ диска. Сомневаюсь, что простая смена расширения влияет на зашитый UTI. Влияет, напр команды mdimport и mdls это показывает (kMDItemContentType). Если расширение никому не принадлежит (как asd) то создается временный UTI типа dyn.<digits>. Да и по смыслу оно так - запрашивается подтверждение, меняется иконка и список открывающих. Никакой "изначальной" инфы не сохраняется, во всяком случае автоматом.Также в mdls есть kMDItemContentTypeTree, и я рассчитывал что мой Conform (public.rtf) будет туда добавлен (для Imported UTI). Но этого почему-то не происходит Название: Re: Разборки с info.plist Отправлено: kambala от Ноябрь 11, 2020, 11:51 https://www67.zippyshare.com/v/aVrg5t0S/file.html
Название: Re: Разборки с info.plist Отправлено: Igors от Ноябрь 11, 2020, 12:54 https://www67.zippyshare.com/v/aVrg5t0S/file.html Так это голый-босый, т.е. только "содержимое файла", остальное утеряно при пересылке. Ну здесь он и показывается как "Document" с временным UTI. Зипаните на Mac, "по идее" zip должен все сохранить.Название: Re: Разборки с info.plist Отправлено: kambala от Ноябрь 11, 2020, 13:47 точно, а я и не понял сначала зачем в zip совать :)
zip: https://www74.zippyshare.com/v/w14ZnFLM/file.html tar на всякий случай: https://www108.zippyshare.com/v/LoktH8vm/file.html Название: Re: Разборки с info.plist Отправлено: Igors от Ноябрь 12, 2020, 11:31 Здесь используется OS File Type/Creator записанное в FinderInfo, т.е. если расширение не зарегистрировано, то UTI вычисляется по OS Type. Если метаданные FinderInfo удалить, то все становится как в предыдущем случае для голого файла. Заметим что приоритет расширения выше. Попробуйте напр .asf (виесто .asd) - и UTI станет другим т.к. есть зарегистрированное asf.
В свой img файл я конечно пишу Type/Creator (еще со времен classic), но это никак не помогает показать инфу Titlle :'( По расширению img вычисляется UTI = com.apple.disk-image-ndif, и нет ни возможности это изменить, ни подсунуть этой уте атрибут Title Где еще можно спросить, знаете Mac форумы (где в лесах много диких обезьян)? Название: Re: Разборки с info.plist Отправлено: kambala от Ноябрь 12, 2020, 12:00 Попробуйте напр .asf (виесто .asd) - и UTI станет другим т.к. есть зарегистрированное asf. таки да :(Где еще можно спросить, знаете Mac форумы (где в лесах много диких обезьян)? https://developer.apple.com/forums/https://stackoverflow.com/ https://apple.stackexchange.com/ https://forums.macrumors.com/ Название: Re: Разборки с info.plist Отправлено: Igors от Ноябрь 13, 2020, 13:21 Ну эти я тоже знаю. Ладно, спробуем на stackoverflow
|