Описание тега omnifocus
Проблема: .itmsp по папки показаны как файлы
Искатель лечит .itmsp по папки, пакеты, то есть, как если бы они были в одном файле. Например, в виде столбцов, содержащихся внутри .папка itmsp является невидимым, отображается только значок документа:
Искатель считает, что каталог должен быть пакет, если любой из следующих условий (из комплекта руководство по программированию):
Каталог имеет известную расширение имени файла: .приложения .расслоение, .рамки, .плагин, .Кест, и так далее (как определено в
/Система/библиотеки/CoreServices/CoreTypes.пакет/содержание/информация.файл plist
. Это двоичный файл plist, открываем его с Xcode:открыты-в Xcode информация.файл plist
).Каталог имеет расширение, что некоторые другие заявка представляет собой пакет типа (искать
ком.яблоко.пакет
в выводесписков MDL -имя kMDItemContentTypeTree <имя_папки>
, чтобы выяснить.)Каталог имеет свой пакет набор бит (если
GetFileInfo -АБ <имя_папки>
возвращает1
, это набор.)
Случай 2. применяется для .itmsp по папки: приложения-загрузчика.приложение
экспорт тип модели com.яблоко.программа iTunes-производителя.itmsp ПО
и устанавливает его, чтобы соответствовать модели com.яблоко.пакет
:
$ mkdir служат ФОО.itmsp по
$ списков MDL -имя kMDItemContentTypeTree ФОО.itmsp по/
kMDItemContentTypeTree = (
"ком.яблоко.программа iTunes-производителя.itmsp по",
"ком.яблоко.пакет",
(...)
)
$ грэп -Б 5-а 8 ком.яблоко.пакет /применения/Xcode.приложение/содержание/Приложения/Приложения\ загрузчик.приложение/содержание/информация.файл plist
<ключ>UTExportedTypeDeclarations</ключ>
<массив>
<дикт>
<ключ>UTTypeConformsTo</ключ>
<массив>
<строка>ком.яблоко.пакет</строка>
<строка>общественности.композит-контента</строка>
</массив>
<ключ>UTTypeDescription</ключ>
<строка>в iTunes пакет</строка>
<ключ>UTTypeIconFile</ключ>
<строка>itmsp по.icns по</строка>
<ключ>UTTypeIdentifier</ключ>
<строка>ком.яблоко.программа iTunes-производителя.itmsp по</строка>
Решение: повторно объявить тип модели com.яблоко.программа iTunes-производителя.itmsp по
Решение может быть повторно объявить тип модели com.яблоко.программа iTunes-производителя.itmsp ПО
и расширение itmsp по
как папку и силу запуска услуг использовать модифицированный тип декларации.
Важное примечание:
Хотя она надежно решает проблему ОП, предлагаемое решение, при нанесении на другие пакеты, не отображать их в виде папок.
Я узнал, что предлагаемое решение, кажется, работает только с типами файлов, заявленных приложений, расположенных в нестандартный путь к приложению.
Это касается
применения погрузчика.приложение
, которое находится впапке/программы/в Xcode.приложение/содержание/приложения/
.Если вы заинтересованы в частичное решение проверить конце этого ответа.
Для того чтобы иметь .itmsp по папки отображаются как папки с помощью поиска выполните следующие шаги:
Откройте Automator в папку приложения и выберите Приложения:
Выберите утилиты в списке "медиатека" выберите пункт выполнить скрипт и перетаскиваем его на панель справа:
Заменить стандартный скрипт содержимое с
выхода 0
:Сохраните программу в качестве itmspOpener:
Рядом Автоматизаторов.
Выберите
itmspOpener.приложение
и показать его содержимое:Найдите Содержание>Информация.plist и откройте его в вашем любимом редакторе:
Заменить эти разделы
информация.файл plist
:<ключ>CFBundleDocumentTypes</ключ> <массив> <дикт> <ключ>CFBundleTypeExtensions</ключ> <массив> <строка>itmsp по</строка> </массив> <ключ>CFBundleTypeName</ключ> <строка>itmsp по папке</строка> <ключ>CFBundleTypeRole</ключ> <строка>просмотр</строка> <ключ>CFBundleTypeIconFile</ключ> <строка>папка</строка> <ключ>LSTypeIsPackage</ключ> <ложных/> <ключ>LSHandlerRank</ключ> <строка>хозяин</строка> </дикт> </массив> (...) <ключ>UTExportedTypeDeclarations</ключ> <массив> <дикт> <ключ>UTTypeConformsTo</ключ> <массив> <строка>kUTTypeDirectory</строка> </массив> <ключ>UTTypeDescription</ключ> <строка>itmsp по папке</строка> <ключ>UTTypeIconFile</ключ> папка <строка>.icns по</строка> <ключ>UTTypeIdentifier</ключ> <строка>ком.яблоко.программа iTunes-производителя.itmsp по</строка> <ключ>UTTypeTagSpecification</ключ> <дикт> <ключ>общественности.имя файла-расширение</ключ> <строка>itmsp по</строка> </дикт> </дикт> </массив>
Примечание: Почему
kUTTypeDirectory
вместообщественных.каталог
вUTExportedTypeDeclarations
? От компании Apple документация: важно: при использовании системы-определяется ИМП в вашем коде, вы должны использовать константы, определенные вUTCoreTypes.ч
в рамках пусковых услуг при наличии, а не фактическая УТИ строк. Например, пройти kUTTypeApplication, а не “ком.яблоко.приложения”. “Система-объявил универсальных идентификаторов типа ” список этих констант в дополнение к ИМП строк.Связать .itmsp файл для
itmspOpener
и нажать кнопку Изменить все...:Сброс базы данных служб запуска:
$ lsregister -убить -Р-локальная в домене -домен системы -домен пользователя
(на ОС х 10.8
lsregister
находится в/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/
.)Создать .папка itmsp ПО и список его свойств:
$ foo3 команды mkdir.itmsp по $ списков MDL -имя kMDItemContentTypeTree foo3.itmsp по/ kMDItemContentTypeTree = ( "общественности.папку", "общественности.каталог", "общественности.пункт" )
Потому что базы данных служб запуска был сброшен, теперь Finder показывает .папки itmsp по как папки.
Открыть
itmspOpener.приложение
для загрузки своего файла plist и зарегистрироватьв COM.яблоко.программа iTunes-производителя.itmsp по
:$ откройте ~/рабочий стол/itmspOpener.приложение
Запустить
Программу Загрузчик.приложение
:$ откройте/приложения/в Xcode.приложение/содержание/приложения/загрузчик приложения.приложение'
Папка
foo3.itmsp по
- прежнему должен быть отображен как папку.Снова проверьте свойства папки:
$ списков MDL -имя kMDItemContentTypeTree foo3.itmsp по/ kMDItemContentTypeTree = ( "общественности.каталог", "общественности.пункт", "общественности.содержание" )
ком.яблоко.пакет
не добавлена в папки атрибуты метаданных, поэтому Искатель-прежнему отображается .папки itmsp по как папки!
Автоматизированное решение: отображение .itmsp по папкам, а папки после входа
Для отображения .itmsp по папкам, а папки после входа:
Создать
itmspOpener.приложение
и изменить своеИнфо.plist файл
, как описано выше.Создать
каталог/usr/местные/Бен/itmspTypeLoader
с этим содержание (переменнаяitmspOpener
указывает на место, гдеitmspOpener.приложение
находится, менять по мере необходимости):#!/бин/Баш itmspOpener="/пользователи/Жауме/приложения/itmspOpener.приложения/" Эхо "$(дата): начало" > /tmp/и itmspTypeLoader.журнал спать 15 Эхо "$(дата): удаление пусковых услуг базы данных" >> /tmp/и itmspTypeLoader.журнал /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -убить -Р-локальная в домене -домен системы -домен пользователя >> /tmp/и itmspTypeLoader.журнал спать 15 Эхо "$(дата): начало $itmspOpener" >> /tmp/и itmspTypeLoader.журнал открытое $itmspOpener >> /tmp/и itmspTypeLoader.журнал сон 1 Эхо "$(дата): запуск загрузчика приложения.приложение" >> /tmp/и itmspTypeLoader.журнал открыто "/применения/Xcode.приложение/содержание/приложения/загрузчик приложения.приложения/" # Подождите, пока процесс "загрузчик приложения.приложение" существует в то время как [ $(ПС -эф|команда grep -v с помощью команды grep|grep в -с "загрузчик приложения") -Пе 1 ]; делать сон 1 Эхо "$(дата): ожидания" >> /tmp/и itmspTypeLoader.журнал сделано # Отправить сигнал term убить -термин, $(ПС -эф|грэп "применение погрузчика"|команда grep -v с помощью команды grep|awk и "{печать \$2}") если [ $? -экв. 0 ]; тогда Эхо "$(дата): загрузчик приложения убиты" >> /tmp/и itmspTypeLoader.журнал еще Эхо "$(дата): загрузчик приложения не могли быть убиты" >> /tmp/и itmspTypeLoader.журнал интернет Эхо "$(дата): выход" >> /tmp/и itmspTypeLoader.журнал
Как
спать 15
до и после выполненияlsregister
имеют огромное значение. Если вы не видите желаемого результата, попробовать разные задержки.Создать
каталог/usr/местные/Бен/itmspTypeLoaderLauncher
с таким содержанием:#!/бин/Баш # $1 возвращает короткое имя пользователя, вошедшего в СУ - $1-с /usr/местные/Бен/itmspTypeLoader &
Установить оба скрипта исполняемым:
$ судо команду chmod а+x /usr/местные/Бен/itmspTypeLoader /usr/местные/Бен/itmspTypeLoaderLauncher
Установить
/usr/местные/Бен/itmspTypeLoaderLauncher
как войти крючок:$ судо по умолчанию запись com.яблоко.loginwindow LoginHook /usr/местные/Бен/itmspTypeLoaderLauncher
Перезагрузка, чтобы изменения вступили в силу. После входа в систему вы должны увидеть это:
и
lsregister -дамп
должен показать, чтоitmspOpener.приложение
сUTExportedTypeDeclarations
берет верх надприложением лоадер.приложение
с:$ lsregister -дамп | меньше идентификатор пакета: 24748 путь: /пользователи/Жауме/рабочий стол/itmspOpener.приложение/ название: itmspOpener (...) флаги: яблоко-внутренний относительный-значок-UI путь-элемент-мин-Сыс-версия-на-арки привет-РЭС-способный пользователь-может-изменить-привет-РЭС-режим пункт флагов: контейнер пакет приложения расширение-скрытые родной-приложения сервисы сценарные архитектуру x86_64 (...) -------------------------------------------------------- тип ID: 33796 ути: ком.яблоко.программа iTunes-производителя.itmsp по описание: папка itmsp по флаги: экспортируемая активная яблока-внутренняя доверять значок: содержание/ресурсы/папки.icns по отвечает: kuttypedirectory теги: .itmsp по -------------------------------------------------------- (...) идентификатор пакета: 24600 путь: /применения/Xcode.приложение/содержание/приложения/загрузчик приложения.приложение/ название: загрузчик приложение (...) флаги: яблоко-внутренний относительный-значок-пути привет-РЭС-способный пользователь-может-изменить-привет-РЭС-режим пункт флагов: контейнер пакет приложения расширение-скрытые родной-приложение для i386 x86_64 с (...) -------------------------------------------------------- тип ID: 33832 ути: ком.яблоко.программа iTunes-производителя.itmsp по описание: пакет для iTunes флаги: экспортировать не активен яблока-внутренняя доверять значок: содержание/ресурсы/itmsp по.icns по отвечает: ком.яблоко.пакет, общественности.композит-содержание теги: .itmsp по --------------------------------------------------------
Вы видите
неактивный
флаг установлен в приложение загрузчик.тип экспорта приложения? Мы победили загрузчик приложения.
Испытание на прочность: .папки itmsp по-прежнему отображается после обновления в iTunes
Недавно я обновил в Xcode:
и могу подтвердить, что .папки itmsp ПО были показаны как папки при обновлении:
и потом:
Частичное решение: пакет будет показывать содержимое при двойном щелчке
Как ранее прокомментировал, действия, описанные выше, не будут работать на произвольных папок, которые отображаются в виде пакетов Искатель.
Однако, если вы просто хотите, чтобы быть в состоянии дважды щелкните пакет, чтобы открыть его, есть способ сделать это с баш
скрипт и автоматизатора:
Скрипт создает скрытые временные папки в пакет, открывает его в окне Finder (при этом раскрыв пакет в виде папки), а затем удаляет временную папку.
Примечание:
Скрипт может создавать скрытый, временный файл. Однако, я предпочитаю, чтобы создать папку, потому что
команда rmdir
только удаляет пустые папки, аРМ
удаляет любой файл, так что если, по некоторым причина. сценарий wreaks хаос, будут удалены только пустые папки, что, вероятно, не так плохо, как если бы файлы были удалены.Автоматизатор пачки скрипт в приложение, которое будет ассоциироваться с файлами пакета.
Эти шаги, чтобы создать такое приложение. Я буду использовать .itmsp файлы как пример типа пакет в объяснение ниже:
Откройте Automator в папку приложения и выберите Приложения:
Выбрать коммунальные услуги в библиотеке списке, выберите Запустить shell-скрипт и перетаскиваем его на панель справа:
Установить пропуск ввода в качестве аргументов:
Заменить содержимое скрипта по умолчанию с этим:
для F В "$@"; сделать # Если дело не с каталога, выход если [ ! -Д "$Ф" ]; затем выйти; интернет # Создаем временную папку внутри файла itmsp"" никакое сжатие="$Ф/.itmspOpener$$" если команды mkdir $никакое сжатие; затем # Показать в Finder открыть -р $никакое сжатие Временный файл # удалить команда rmdir $никакое сжатие интернет сделано
Сохраните программу в качестве itmspOpener:
Рядом Автоматизаторов.
Теперь у вас есть приложение, которое сможет открыть .itmsp файлы как папки, если связанные с ним.
Есть косметическая проблема: как она стоит, связанные файлы будут иметь стандартный значок белый документ:
Давайте исправим это тоже:
Убедитесь, что кинотеатр закрыт.
Выберите itmspOpener и показать его содержимое:
Найдите Содержание>Информация.plist и откройте его в вашем любимом редакторе:
Замените значение этого ключа в
CFBundleDocumentTypes
массива:<ключ>CFBundleTypeName</ключ> <строка>itmsp по папке</строка>
и добавить этот ключ:
<ключ>CFBundleTypeIconFile</ключ> <строка>папка</строка>
Теперь раздел выглядит так:
Переключения в Finder, выберите папку, нажмите ⌘я, выберите значок папки в левом верхнем углу и скопируйте его с ⌘с:
Откройте предварительный просмотр и выберите Файл>Новый из буфера обмена. Сохраните файл как
папку.icns по
:Скопируйте
папку.icns по
даннымitmspOpener/содержание/ресурсы
:Связать .itmsp файл для
itmspOpener
и нажать кнопку Изменить все...:
Икона .файлы itmsp должны меняться в папку, или, по крайней мере, я так думал: к сожалению, это был не тот случай. Так что я переехал в itmspOpener приложения в другое место (я создал временную папку на моем рабочем столе, перенесли его туда и обратно на моем рабочем столе). Что обновили информацию значок в Finder:
Теперь двойным щелчком .файл itmsp и смотреть его открыть как папку: