Пакет (macOS)
Расширение имени файла | .app, .framework, .kext, .plugin, .docset, .xpc, .qlgenerator, .comComponent, .saver, .mdimporter и т. д. |
---|---|
Единый идентификатор типа (UTI) | com.apple.bundle |
Контейнер для | исполняемый двоичный файл , метаданные , другие пакеты и любой другой файл, необходимый для запуска приложения. |
В NeXTSTEP , OPENSTEP и их прямых потомках macOS , iOS , iPadOS , tvOS и watchOS , а также в GNUstep пакет представляет собой файловый каталог с определенной структурой и расширением файла, позволяющий группировать связанные файлы вместе как концептуально единый элемент. .
Примеры пакетов, содержащих исполняемый код, включают приложения , платформы и плагины . Этот тип пакета обычно содержит один файл, представляющий исполняемый код, и файлы, представляющие такие ресурсы, как перья , шаблоны, изображения, звуки и другие медиафайлы. В некоторых других системах, таких как Microsoft Windows , эти ресурсы обычно включаются непосредственно в сам исполняемый файл во время компиляции. На старых Macintosh используется аналогичный метод, при котором дополнительные метаданные файла можно добавлять в вилку ресурса . Аналогичными по концепции являются каталоги приложений , используемые в ОС RISC и на рабочем столе ROX .
Примеры пакетов, не содержащих исполняемый код, включают пакеты документов ( документы iWork ) и медиа-библиотеки ( библиотека iPhoto ).
Доступ к пакетам осуществляется программно с помощью NSBundle
класс в платформах Cocoa , NeXTSTEP и GNUstep Foundation , а также с CFBundle
в Core Foundation . В комплекты часто входит Информация. plist- файл для метаданных. [1] Единый идентификатор типа (UTI) для пакета Apple: com.apple.bundle
. [2]
Пакеты приложений [ править ]
Расширение имени файла | .приложение |
---|---|
Единый идентификатор типа (UTI) | com.apple.application-bundle |
Тип формата | прикладное программное обеспечение |
Контейнер для | исполняемый двоичный файл |
Расширено с | Пучок |
Пакеты приложений представляют собой иерархии каталогов, в которых имя каталога верхнего уровня заканчивается на .app
расширение.
В пакете приложений macOS первый каталог в пакете под каталогом верхнего уровня обычно называется Contents
. В пределах Contents
обычно существует еще один каталог, называемый MacOS
, который содержит исполняемый код приложения. Contents
папка содержит файл с именем Info.plist
, который содержит информацию о приложении, такую как имя поставщика программного обеспечения, имя файлов, содержащих исполняемый файл и значок приложения, версию приложения, запрошенные разрешения и т. д. Contents
папка обычно также имеет каталог под названием Resources
, который содержит ресурсы приложения. [3]
Среди прочего, Resources
приложения Папка содержит локализованные версии файлов пера .
Другие распространенные подкаталоги включают в себя Plugins
, Frameworks
, _CodeSignature
и Shared Frameworks
. Frameworks
Каталог содержит платформы, используемые приложением, и используются, даже если в системе существует другая версия платформы. Shared Frameworks
каталог содержит фреймворки, которые могут использоваться как приложением, которое их содержит, так и другими приложениями; они используются только в том случае, если более новая версия не существует где-либо еще в системе. Plugins
содержит расширяемый код, используемый приложением. _CodeSignature
Папка содержит информацию, используемую системой для проверки того, что пакет исходит от доверенной стороны и не был подделан.
По умолчанию Finder отображает пакеты приложений, которые также можно называть пакетами , как непрозрачные файлы без базовой структуры; содержимое пакета можно отобразить с помощью пункта контекстного меню «Показать содержимое пакета» .
GNUstep по умолчанию использует имя приложения для обозначения папки, содержащей код приложения. Альтернативный вариант — назвать их по архитектуре компьютера и ОС, для которой предназначен код, чтобы сформировать « толстый» двоичный файл , чтобы приложение можно было открыть на многих платформах. [4] [5]
Пакеты фреймворков macOS [ править ]
Расширение имени файла | .рамки |
---|---|
Единый идентификатор типа (UTI) | com.apple.framework |
Расширено с | пучок |
Фреймворки macOS также хранятся в виде пакетов; [6] каталог верхнего уровня пакета фреймворка имеет имя, которое представляет собой имя фреймворка, за которым следует расширение .framework
. В каталоге верхнего уровня находится Versions
каталог с подкаталогами для одной или нескольких версий платформы, причем каждый подкаталог содержит код динамической библиотеки для платформы, в файле, имя которого совпадает с именем платформы, возможно, с Headers
папка, содержащая файлы заголовков для платформы, и другие подпапки, такие как Resources
. Versions
каталог также содержит символическую ссылку Current
в каталог текущей версии фреймворка. В каталоге верхнего уровня находятся символические ссылки на содержимое Versions/Current
. [7]
Finder отображает пакеты фреймворка как каталоги , а не как непрозрачные файлы.
Хотя GNUstep использует платформы, они обычно не хранятся в виде пакетов. Это связано с тем, что полная семантика загрузки фреймворка считается слишком чуждой другим платформам. [8]
Загружаемые пакеты [ править ]
Загружаемые пакеты — это пакеты, содержащие код, который можно загрузить во время выполнения. [9] Загружаемые пакеты обычно имеют расширение .bundle
и чаще всего используются в качестве плагинов . В macOS есть способ загружать пакеты даже в приложения, которые их не поддерживают, что позволяет сторонним хакам использовать популярные приложения, такие как Safari. [10] и Apple Mail . [11] [12] Функция, унаследованная от NeXTSTEP, GNUstep имеет -[NSBundle principalClass]
интерфейс тоже.
По умолчанию Finder отображает загружаемые пакеты, которые также можно называть пакетами , как непрозрачные файлы без базовой структуры; содержимое пакета можно отобразить с помощью пункта контекстного меню «Показать содержимое пакета» .
Другие форматы пакетов [ править ]
Существует множество приложений macOS, которые используют собственный формат пакета (например, CandyBar .iContainer
, Диафрагма .aplibrary
, VMware Fusion .vmwarevm
, и т. д.).
.lproj [ править ]
Файл .lproj — это пакет, содержащий файлы локализации для программного обеспечения OpenStep, macOS или GNUstep. Обычно он содержит .nib
файлы для данного языка вместе с .strings
файлы и изображения при необходимости (например, ReadMe или файлы лицензий). Эти локализованные файлы используются создателями установщиков для настройки установочных пакетов. Они также включены в пакет приложений.
См. также [ править ]
- Каталог приложений — ОС RISC. аналог пакета приложений
- AppImage — приложение Linux, использующее аналогичные принципы.
- Приложение — приложение HarmonyOS, использующее аналогичные принципы.
- Каталог форматов расширенного текста — расширение RTF от Apple с использованием пакетов.
Ссылки [ править ]
- ^ «Список информационных свойств — ресурсы пакета» . Документация разработчика Apple .
- ^ «Объявленные системой унифицированные идентификаторы типов» . Справочник по унифицированным идентификаторам типов . Apple Inc. Проверено 10 июня 2012 г.
- ^ «Пакетные структуры» . Руководство по программированию пакетов . Apple Inc. 27 марта 2017 г. Пакеты приложений.
- ^ «PackagingDrafts/GNUstep» . Вики проекта Fedora .
- ^ "gnustep/tools-make: README.Packaging" . Гитхаб . 5 декабря 2021 г.
- ^ "Рамки" . разработчик.apple.com . Проверено 6 октября 2020 г.
- ^ «Пакетные структуры» . Руководство по программированию пакетов . Apple Inc. 27 марта 2017 г. Анатомия пакета фреймворка.
- ^ «Часто задаваемые вопросы для пользователей» . GNUшаг .
- ^ Темы по программированию загрузки кода для Cocoa: о загружаемых пакетах
- ^ «Прокачай мое Safari: плагины» . Архивировано из оригинала 31 октября 2007 г.
- ^ «Плагины и инструменты Apple Mail» . Архивировано из оригинала 8 марта 2009 г. Проверено 4 ноября 2007 г.
- ^ «Hawk Wings — Плагины для Apple Mail» . Архивировано из оригинала 31 августа 2007 г.
Внешние ссылки [ править ]
- Руководство по программированию пакетов на сайте Apple Developer Connection
- Документация NSBundle из проекта GNUstep
- Platypus — инструмент для создания пакетов приложений на основе скриптов.
- Подробности расширения файла