Из Википедии, свободной энциклопедии
Перейти к навигацииПерейти к поиску

В 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

Пакеты приложений

Пакеты приложений представляют собой иерархии каталогов, причем имя каталога верхнего уровня заканчивается .appрасширением. В пакете приложений обычно называется первый каталог в пакете под каталогом верхнего уровня Contents. Внутри Contentsобычно есть другой каталог (называемый MacOSна Mac), содержащий исполняемый код приложения. Внутри Contentsпапки обычно есть каталог с именем Resources, который содержит ресурсы приложения.

Помимо прочего, в Resourcesпапке находятся локализованные версии файлов пера приложения .

Другие общие подкаталоги включают в себя Plugins, Frameworksи Shared Frameworks. FrameworksКаталог содержит рамки , используемые приложением, и используются , даже если другая версия рамок существует в системе. Shared FrameworksКаталог содержит структуры , которые могут быть использованы как в приложении , которое содержит их, и других приложений; они используются только в том случае, если более новой версии не существует в другом месте в системе. Pluginsсодержит расширяемый код, используемый приложением.

По умолчанию Finder отображает пакеты приложений, которые также могут называться пакетами , как непрозрачные файлы без базовой структуры; содержимое пакета можно отобразить с помощью пункта контекстного меню «Показать содержимое пакета» .

GNUstep по умолчанию использует имя приложения для именования папки, содержащей код приложения. Альтернативный вариант - назвать их по архитектуре компьютера и ОС, для которой предназначен код, чтобы сформировать толстый двоичный файл , чтобы приложение можно было открыть на многих платформах. [3] [4]

Пакеты фреймворка macOS

Фреймворки 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, использующее аналогичные принципы.

Ссылки

  1. ^ "Список свойств информации - Ресурсы пакета" . Документация для разработчиков Apple .
  2. ^ «Объявленные системой унифицированные идентификаторы типа» . Справочник по унифицированным идентификаторам типов . Apple , Inc. Источник 2012-06-10 .
  3. ^ "PackagingDrafts / GNUstep" . Вики проекта Fedora .
  4. ^ "gnustep / tools-make: README.Packaging" . GitHub .
  5. ^ «Рамки» . developer.apple.com . Проверено 6 октября 2020 .
  6. ^ «Анатомия пакетов рамок» . Apple , Inc . Проверено 3 сентября 2011 .
  7. ^ "Пользовательские FAQ" . GNUstep .
  8. ^ Темы программирования загрузки кода для какао: о загружаемых пакетах
  9. ^ «Pimp My Safari: плагины» . Архивировано из оригинала на 2007-10-31.
  10. ^ «Плагины и инструменты Apple Mail» . Архивировано из оригинала на 2009-03-08 . Проверено 4 ноября 2007 .
  11. ^ «Крылья ястреба - плагины для Apple Mail» . Архивировано из оригинала на 2007-08-31.

Внешние ссылки

  • Руководство по программированию пакетов в Apple Developer Connection
  • Документация NSBundle из проекта GNUstep
  • Platypus - инструмент для создания пакетов приложений вокруг скриптов
  • Сведения о расширении файла