В NeXTSTEP , OPENSTEP и их прямых потомках macOS , iOS , iPadOS , tvOS и watchOS , а также в GNUstep пакет представляет собой файловый каталог с определенной структурой и расширением файла, позволяющий группировать связанные файлы вместе как концептуально единый элемент. .
Примеры пакетов, содержащих исполняемый код, включают приложения , платформы и плагины . Пакет такого типа обычно содержит один файл, представляющий исполняемый код, и файлы, представляющие такие ресурсы, как перья , шаблоны, изображения, звуки и другие медиафайлы. В некоторых других системах, таких как Microsoft Windows , эти ресурсы обычно включаются непосредственно в сам исполняемый файл во время компиляции. На старых Macintosh используется аналогичный метод, при котором в вилку ресурса файла можно добавлять дополнительные метаданные . Аналогичными по концепции являются каталоги приложений , используемые в ОС RISC и на рабочем столе ROX .
Примеры пакетов, не содержащих исполняемый код, включают пакеты документов ( документы iWork ) и медиа-библиотеки ( библиотека iPhoto ).
Доступ к пакетам осуществляется программно с помощью NSBundle
класса в платформах Cocoa , NeXTSTEP и GNUstep Foundation , а также с CFBundle
помощью Core Foundation . Пакеты часто включают в себя файл Info. plist- файл для метаданных. [1] Единый идентификатор типа (UTI) для пакета Apple — . [2]com.apple.bundle
Пакеты приложений представляют собой иерархии каталогов, в которых имя каталога верхнего уровня заканчивается расширением .app
.
В пакете приложений macOS первый каталог в пакете под каталогом верхнего уровня обычно называется Contents
. Внутри Contents
обычно имеется еще один каталог, называемый MacOS
, который содержит исполняемый код приложения. В Contents
папке содержится файл с именем Info.plist
, который содержит информацию о приложении, такую как имя поставщика программного обеспечения, имена файлов, содержащих исполняемый файл и значок приложения, версию приложения, запрошенные разрешения и т. д. В папке обычно также находится Contents
файл каталог с именем Resources
, который содержит ресурсы приложения. [3]