Russian Qt Forum
Ноябрь 25, 2024, 10:03
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Компиляторы и платформы
>
Mac OS X
>
Разборки с info.plist
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Разборки с info.plist (Прочитано 10428 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Разборки с info.plist
«
:
Ноябрь 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)" как его юзать - хз.
В общем - застрял. Есть познания и/или мысли?
Спасибо
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Разборки с info.plist
«
Ответ #1 :
Ноябрь 09, 2020, 14:19 »
Цитата: Igors от Ноябрь 08, 2020, 14:17
Ну ладно, "пытаюсь разобраться"
В 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
еще можно посмотреть как другие приложения их описывают.
без минимального примера никто смотреть, скорее всего, не будет
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Разборки с info.plist
«
Ответ #2 :
Ноябрь 09, 2020, 15:16 »
Ну я знал кто ответит
Цитата: kambala от Ноябрь 09, 2020, 14:19
первые же ссылки из поиска дают всю необходимую инфу по этим полям:
Ну почему Вы полагаете что я даже не смотрел первые же ссылки, а сразу полез на форум спрашивать? "У кого глупость других не вызывает удивления?"
Цитата: kambala от Ноябрь 09, 2020, 14:19
без минимального примера никто смотреть, скорее всего, не будет
А минимальный пример у Вас "в кармане". Требуется
Для файла с расширением .img в окне Finder'а, панели "More Info" показать
Цитировать
Title: kambala
И, как я понял, такой возможности (почти) нет
Вот с каким-то своим расширением - пожалуйста. Для img можно вместо "Title" показать "Where From" или "Kind" - пожалуйста, но не более того. "Почти" - ну может это решается кастомным импортером. Та це вже занадто
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Разборки с info.plist
«
Ответ #3 :
Ноябрь 09, 2020, 15:55 »
Цитата: Igors от Ноябрь 09, 2020, 15:16
Ну почему Вы полагаете что я даже не смотрел первые же ссылки, а сразу полез на форум спрашивать?
а потому что не видно попыток решения в виде кода или отрывков Info.plist
Цитата: Igors от Ноябрь 09, 2020, 15:16
А минимальный пример у Вас "в кармане"
описательно минимальный пример ясен, конечно. тем не менее, у вас уже есть некоторые наработки, которые можно было бы оформить в виде компилируемого примера, от которого и плясать, а не проделывать все то же самое с нуля, особенно с учетом отсутствия опыта именно с данной темой
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Разборки с info.plist
«
Ответ #4 :
Ноябрь 10, 2020, 10:50 »
Цитата: kambala от Ноябрь 09, 2020, 15:55
описательно минимальный пример ясен, конечно. тем не менее, у вас уже есть некоторые наработки, которые можно было бы оформить в виде компилируемого примера, от которого и плясать, а не проделывать все то же самое с нуля, особенно с учетом отсутствия опыта именно с данной темой
Думаю здесь выкладывать какие-то файлы неэффективно. Ну ладно, давайте "по шагам"
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 нет), делиться мне просто нечем
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Разборки с info.plist
«
Ответ #5 :
Ноябрь 10, 2020, 11:27 »
больше похоже, что это как-то связано именно с образами диска, ибо та же история с файлом dmg. При этом, если переименовать в какой-нибудь log или md, то атрибут по-прежнему виден в файндере. Вроде ничего особенного не объявлено в /System/Library/CoreServices/DiskImageMounter.app/Contents/Info.plist ...
разве что только попробовать написать свой QL плагин, который будет отображать любые кастомные данные
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Разборки с info.plist
«
Ответ #6 :
Ноябрь 10, 2020, 12:16 »
Цитата: kambala от Ноябрь 10, 2020, 11:27
больше похоже, что это как-то связано именно с образами диска, ибо та же история с файлом 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. Не бычит
Цитата: kambala от Ноябрь 10, 2020, 11:27
разве что только попробовать написать свой QL плагин, который будет отображать любые кастомные данные
Скорее всего да, но это уже вопрос "другого порядка", здесь речь о том можно ли обеспечить показ юзая только info.plist, без написания кода. Выходит для "уже занятых" нельзя
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Разборки с info.plist
«
Ответ #7 :
Ноябрь 10, 2020, 13:50 »
Цитата: Igors от Ноябрь 10, 2020, 12:16
Правда не понял почему "Imported UTI" не имеет эффекта. По смыслу вроде "оно", указываю идентификатор = com.apple.disk-image-ndif и "Conform to UTI" = public.rtf. Не бычит
а почему Conform должен быть на ртф? там же изначально образ диска. Сомневаюсь, что простая смена расширения влияет на зашитый UTI.
вот пример: я сначала создал dmg, потом сменил расширение. что показывает path finder:
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Разборки с info.plist
«
Ответ #8 :
Ноябрь 11, 2020, 10:38 »
Цитата: kambala от Ноябрь 10, 2020, 13:50
вот пример: я сначала создал dmg, потом сменил расширение. что показывает path finder:
О path finder ничего не слышал. Выложите Ваш asd файл (в zip). Спасибо
Цитата: kambala от Ноябрь 10, 2020, 13:50
а почему Conform должен быть на ртф? там же изначально образ диска. Сомневаюсь, что простая смена расширения влияет на зашитый UTI.
Влияет, напр команды mdimport и mdls это показывает (kMDItemContentType). Если расширение никому не принадлежит (как asd) то создается временный UTI типа dyn.<digits>. Да и по смыслу оно так - запрашивается подтверждение, меняется иконка и список открывающих. Никакой "изначальной" инфы не сохраняется, во всяком случае автоматом.
Также в mdls есть kMDItemContentTypeTree, и я рассчитывал что мой Conform (public.rtf) будет туда добавлен (для Imported UTI). Но этого почему-то не происходит
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Разборки с info.plist
«
Ответ #9 :
Ноябрь 11, 2020, 11:51 »
https://www67.zippyshare.com/v/aVrg5t0S/file.html
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Разборки с info.plist
«
Ответ #10 :
Ноябрь 11, 2020, 12:54 »
Цитата: kambala от Ноябрь 11, 2020, 11:51
https://www67.zippyshare.com/v/aVrg5t0S/file.html
Так это голый-босый, т.е. только "содержимое файла", остальное утеряно при пересылке. Ну здесь он и показывается как "Document" с временным UTI. Зипаните на Mac, "по идее" zip должен все сохранить.
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Разборки с info.plist
«
Ответ #11 :
Ноябрь 11, 2020, 13:47 »
точно, а я и не понял сначала зачем в zip совать
zip:
https://www74.zippyshare.com/v/w14ZnFLM/file.html
tar на всякий случай:
https://www108.zippyshare.com/v/LoktH8vm/file.html
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Разборки с info.plist
«
Ответ #12 :
Ноябрь 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 форумы (где в лесах много диких обезьян)?
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Разборки с info.plist
«
Ответ #13 :
Ноябрь 12, 2020, 12:00 »
Цитата: Igors от Ноябрь 12, 2020, 11:31
Попробуйте напр .asf (виесто .asd) - и UTI станет другим т.к. есть зарегистрированное asf.
таки да
Цитата: Igors от Ноябрь 12, 2020, 11:31
Где еще можно спросить, знаете Mac форумы (где в лесах много диких обезьян)?
https://developer.apple.com/forums/
https://stackoverflow.com/
https://apple.stackexchange.com/
https://forums.macrumors.com/
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Разборки с info.plist
«
Ответ #14 :
Ноябрь 13, 2020, 13:21 »
Ну эти я тоже знаю. Ладно, спробуем на stackoverflow
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...