Расширение имени файла | .app, .framework, .kext, .plugin, .docset, .xpc, .qlgenerator, .component, .saver, .mdimporter и т. д. |
---|---|
Единый идентификатор типа (UTI) | com.apple.bundle |
Контейнер для | исполняемый двоичный файл , метаданные , другие пакеты, любой другой файл, необходимый для запуска приложения. |
В NeXTSTEP , OPENSTEP , GNUstep и их прямые потомки MacOS и прошивке , пакет представляет собой файл каталог с определенной структурой и расширением файла, позволяя связанные с ним файлы , которые будут сгруппированы вместе , как концептуально одного элемента.
Примеры пакетов, содержащих исполняемый код, включают приложения , фреймворки и плагины . Этот тип пакета обычно содержит один файл, представляющий исполняемый код, и файлы, представляющие ресурсы, такие как перья , шаблоны, изображения, звуки и другие носители. В некоторых других системах, таких как Microsoft Windows , эти ресурсы обычно включаются непосредственно в сам исполняемый файл во время компиляции. На старых Macintosh используется похожий метод, когда дополнительные метаданные могут быть добавлены в вилку ресурсов файла . Аналогичны по концепции каталоги приложений, используемые в ОС RISC и наROX Desktop .
Примеры пакетов, не содержащих исполняемого кода, включают пакеты документов ( документы iWork ) и библиотеки мультимедиа ( iPhoto Library).
Доступ к пакетам осуществляется программно с помощью NSBundle
класса в структурах Cocoa , NeXTSTEP и GNUstep Foundation , а также CFBundle
в Core Foundation . Пакеты часто включают Info. plist для метаданных. [1] Uniform Type Identifier (ИМП) для пучка Apple , является . [2]com.apple.bundle
Пакеты приложений
Расширение имени файла | .приложение |
---|---|
Единый идентификатор типа (UTI) | com.apple.application-bundle |
Тип формата | программное обеспечение |
Контейнер для | исполняемый двоичный файл |
Расширен с | Пучок |
Пакеты приложений представляют собой иерархии каталогов, причем имя каталога верхнего уровня заканчивается .app
расширением. В пакете приложений обычно называется первый каталог в пакете под каталогом верхнего уровня Contents
. Внутри Contents
обычно есть другой каталог (называемый MacOS
на Mac), содержащий исполняемый код приложения. Внутри Contents
папки обычно есть каталог с именем Resources
, который содержит ресурсы приложения.
Помимо прочего, в Resources
папке находятся локализованные версии файлов пера приложения .
Другие общие подкаталоги включают в себя Plugins
, Frameworks
и Shared Frameworks
. Frameworks
Каталог содержит рамки , используемые приложением, и используются , даже если другая версия рамок существует в системе. Shared Frameworks
Каталог содержит структуры , которые могут быть использованы как в приложении , которое содержит их, и других приложений; они используются только в том случае, если более новой версии не существует в другом месте в системе. Plugins
содержит расширяемый код, используемый приложением.
По умолчанию Finder отображает пакеты приложений, которые также могут называться пакетами , как непрозрачные файлы без базовой структуры; содержимое пакета можно отобразить с помощью пункта контекстного меню «Показать содержимое пакета» .
GNUstep по умолчанию использует имя приложения для именования папки, содержащей код приложения. Альтернативный вариант - назвать их по архитектуре компьютера и ОС, для которой предназначен код, чтобы сформировать толстый двоичный файл , чтобы приложение можно было открыть на многих платформах. [3] [4]
Пакеты фреймворка macOS
Расширение имени файла | .фреймворк |
---|---|
Единый идентификатор типа (UTI) | com.apple.framework |
Расширен с | пучок |
Фреймворки macOS также хранятся в виде пакетов; [5] каталог верхнего уровня пакета фреймворка имеет имя, которое является именем фреймворка, за которым следует расширение .framework
. В каталоге верхнего уровня находится Versions
каталог с подкаталогами для одной или нескольких версий платформы, каждый подкаталог содержит код динамической библиотеки для платформы в файле, имя которого совпадает с именем платформы, возможно, с Headers
папка, содержащая файлы заголовков для платформы и другие подпапки, такие как Resources
. Versions
Каталог также содержит ссылку Current
на каталог для текущей версии фреймворка. В каталоге верхнего уровня есть символические ссылки на содержимое Versions/Current
. [6]
Finder отображает рамки расслоение как каталоги , а не как непрозрачные файлы.
Хотя GNUstep использует фреймворки, они обычно не хранятся в виде пакетов. Это связано с тем, что полная семантика загрузки фреймворка считается слишком чуждой для других платформ. [7]
Загружаемые пакеты
Загружаемые пакеты - это пакеты, которые содержат код, который может быть загружен во время выполнения. [8] Загружаемые пакеты обычно имеют расширение .bundle
и чаще всего используются в качестве подключаемых модулей . В macOS есть способ загружать пакеты даже в приложения, которые их не поддерживают, что позволяет сторонним разработчикам взломать популярные приложения, такие как Safari [9] и Apple Mail . [10] [11] У GNUstep есть -[NSBundle principalClass]
интерфейс, унаследованный от NeXTSTEP .
По умолчанию Finder отображает загружаемые пакеты, которые также могут называться пакетами , как непрозрачные файлы без базовой структуры; содержимое пакета можно отобразить с помощью пункта контекстного меню «Показать содержимое пакета» .
Другие форматы пакетов
Существует множество сторонних приложений для macOS, которые используют свой собственный формат пакетов (например, CandyBar.iContainer
, Aperture .aplibrary
, VMware Fusion .vmwarevm
и т. Д.).
.lproj
Файл .lproj - это пакет, который содержит файлы локализации для программного обеспечения OpenStep, macOS или GNUstep. Обычно он содержит .nib
файлы для данного языка, а также .strings
файлы и изображения, если это необходимо (например, ReadMe или файлы лицензий). Эти локализованные файлы используются разработчиками программы установки для настройки пакетов установки. Они также включены в комплект приложения.
См. Также
- Каталог приложений - аналог RISC OS для пакета приложений
- AppImage - приложение для Linux, использующее аналогичные принципы.
Ссылки
- ^ "Список свойств информации - Ресурсы пакета" . Документация для разработчиков Apple .
- ^ «Объявленные системой унифицированные идентификаторы типа» . Справочник по унифицированным идентификаторам типов . Apple , Inc. Источник 2012-06-10 .
- ^ "PackagingDrafts / GNUstep" . Вики проекта Fedora .
- ^ "gnustep / tools-make: README.Packaging" . GitHub .
- ^ «Рамки» . developer.apple.com . Проверено 6 октября 2020 .
- ^ «Анатомия пакетов рамок» . Apple , Inc . Проверено 3 сентября 2011 .
- ^ "Пользовательские FAQ" . GNUstep .
- ^ Темы программирования загрузки кода для какао: о загружаемых пакетах
- ^ «Pimp My Safari: плагины» . Архивировано из оригинала на 2007-10-31.
- ^ «Плагины и инструменты Apple Mail» . Архивировано из оригинала на 2009-03-08 . Проверено 4 ноября 2007 .
- ^ «Крылья ястреба - плагины для Apple Mail» . Архивировано из оригинала на 2007-08-31.
Внешние ссылки
- Руководство по программированию пакетов в Apple Developer Connection
- Документация NSBundle из проекта GNUstep
- Platypus - инструмент для создания пакетов приложений вокруг скриптов
- Сведения о расширении файла