Расширение имени файла | .app,.framework,.kext,.plugin,.docset,. xpc,.qlgenerator,.component,.saver,.mdimporter и т. д. |
---|---|
Унифицированный идентификатор типа (UTI) | com.apple.bundle |
Контейнер для | исполняемого двоичного файла, метаданные, другие пакеты, любой другой файл, необходимый для запуска приложения. |
В NeXTSTEP, OPENSTEP, GNUstep и их прямых потомках macOS и iOS, пакет bundle - это файл , каталог с определенной структурой и расширением файла, что позволяет группировать связанные файлы в виде концептуально единый элемент.
Примеры пакетов, содержащих исполняемый код, включают приложения, фреймворки и плагины. Этот тип пакета обычно содержит один файл, представляющий исполняемый код, и файлы, представляющие ресурсы, такие как перья, шаблоны, изображения, звуки и другие носители. В некоторых других системах, таких как Microsoft Windows, эти ресурсы обычно включаются непосредственно в сам исполняемый файл во время компиляции. На старых Macintosh используется похожий метод, когда дополнительные метаданные могут быть добавлены в ветвь ресурсов файла. Аналогичны по концепции каталоги приложений, используемые в RISC OS и на ROX Desktop.
. Примеры пакетов, не содержащих исполняемый код, включают пакеты документов (документы iWork ) и медиа-библиотеки (iPhoto Library).
Программный доступ к пакетам осуществляется с помощью класса NSBundle
в структурах Cocoa, NeXTSTEP и GNUstep Foundation, а также с помощью CFBundle
в Core Foundation. Пакеты часто включают файл Info. plist для метаданных. Uniform Type Identifier (UTI) для пакета Apple - это com.apple.bundle
.
Расширение имени файла | .app |
---|---|
Uniform Type Identifier (UTI) | com.apple.application-bundle |
Тип формата | прикладное программное обеспечение |
Контейнер для | исполняемого двоичного файла |
Расширенный от | Пакет |
Пакеты приложений представляют собой иерархии каталогов, причем имя каталога верхнего уровня заканчивается расширением .app
. В пакете приложений первый каталог в пакете под каталогом верхнего уровня обычно называется Contents
. Внутри Contents
обычно есть другой каталог (называемый MacOS
на компьютерах Mac), который содержит исполняемый код приложения. В папке Contents
обычно также есть каталог с именем Resources
, который содержит ресурсы приложения.
Среди прочего, папка Resources
содержит локализованные версии файлов пера приложения.
Другие общие подкаталоги включают Plugins
, Frameworks
и Общие платформы
. Каталог Frameworks
содержит структуры, используемые приложением, и используются, даже если в системе существует другая версия платформы. Каталог Shared Frameworks
содержит платформы, которые могут использоваться как приложением, которое их содержит, так и другими приложениями; они используются только в том случае, если более новой версии не существует в другом месте в системе. Плагины
содержат расширяемый код, используемый приложением.
По умолчанию Finder отображает пакеты приложений, которые также могут называться пакетами, как непрозрачные файлы без базовой структуры; содержимое пакета можно отобразить с помощью пункта контекстного меню «Показать содержимое пакета».
GNUstep по умолчанию использует имя приложения для именования папки, содержащей код приложения. Альтернативный вариант - назвать их по архитектуре компьютера и ОС, для которой предназначен код, чтобы сформировать толстый двоичный файл, чтобы приложение можно было открывать на многих платформах.
Расширение имени файла | .framework |
---|---|
Идентификатор унифицированного типа (UTI) | com.apple.framework |
Расширенный из | пакет |
Также хранятся фреймворки macOS как связки; каталог верхнего уровня пакета фреймворка имеет имя, которое является именем фреймворка, за которым следует расширение .framework
. В каталоге верхнего уровня находится каталог Versions
с подкаталогами для одной или нескольких версий платформы, каждый подкаталог содержит код динамической библиотеки для платформы в файле, имя которого совпадает с именем структуры, возможно, с папкой Headers
, содержащей файлы заголовков для платформы, и другие подпапки, такие как Resources
. Каталог Versions
также содержит символическую ссылку Current
на каталог для текущей версии платформы. В каталоге верхнего уровня есть символические ссылки на содержимое Versions / Current
.
. Finder отображает пакеты инфраструктуры в виде каталогов, а не в виде непрозрачных файлов.
Хотя GNUstep использует фреймворки, они обычно не хранятся в виде пакетов. Это связано с тем, что полная семантика загрузки фреймворка считается слишком чуждой для других платформ.
Загружаемые пакеты - это пакеты, которые содержат код, который может быть загружен во время выполнения. Загружаемые пакеты обычно имеют расширение .bundle
и чаще всего используются как подключаемые модули. В macOS есть способ загружать пакеты даже в приложения, которые их не поддерживают, что позволяет сторонним разработчикам взломать популярные приложения, такие как Safari и Apple Mail. Унаследованная от NeXTSTEP функция GNUstep также имеет интерфейс - [NSBundle PrincipalClass]
.
По умолчанию Finder отображает загружаемые пакеты, которые также могут называться пакетами, как непрозрачные файлы без базовой структуры; содержимое пакета можно отобразить с помощью пункта контекстного меню «Показать содержимое пакета».
Существует множество сторонних приложений для macOS, которые используют собственный настраиваемый формат пакетов (например, CandyBar .iContainer
, Aperture .aplibrary
, VMware Fusion .vmwarevm
и т. Д.).
Файл .lproj - это пакет, который содержит файлы локализации для программного обеспечения OpenStep, macOS или GNUstep. Обычно он содержит файлы .nib
для данного языка, а также файлы .strings
и изображения, если это необходимо (например, ReadMe или файлы лицензии). Эти локализованные файлы используются разработчиками программы установки для настройки пакетов установки. Они также включены в комплект приложения.