Что такое формат файла BUNDLE?
.bundle - это формат пакета плагинов для macOS, разработанный Apple. Вместо настоящего одиночного файла .bundle представляет собой пакет каталогов - папку, которую Finder представляет как один непрозрачный элемент. Эта концепция была унаследована от NeXTSTEP и формализована в Mac OS X 10.0.
Файлы с расширением .bundle содержат исполняемый код и ресурсы. Файлы .bundle используются в macOS в качестве контейнеров для распространения:
- приложений,
- фреймворков (платформ разработки и библиотек),
- плагинов.
Данные внутри .bundle организованы по-разному в зависимости от типа хранимого содержимого. Тип данных, содержащихся в файле .bundle, также определяет, как Finder будет отображать файл. Плагины и приложения отображаются как отдельные файлы, которые можно просмотреть с помощью команды «Показать содержимое пакета». Фреймворки отображаются как папки с файлами. Файлы .bundle не следует открывать вручную независимо от их содержимого.
Внутренне .bundle следует структуре CFBundle: папка Contents/ с манифестом Info.plist (объявляющим CFBundlePackageType = BNDL), подпапка MacOS/ с исполняемым файлом Mach-O и Resources/. Связанные типы включают .app, .framework, .kext и .plugin.
Безопасность и защита
РИСК: MEDIUMФайл .bundle содержит исполняемый код, который хост-приложение будет загружать и запускать, поэтому к нему применимы те же соображения безопасности, что и при установке любого плагина: устанавливайте пакеты только из источников, которым вы доверяете, и отдавайте предпочтение подписанным/нотариально заверенным версиям, чтобы macOS Gatekeeper мог их проверить. Простой просмотр содержимого пакета в Finder безвреден; риск заключается в загрузке недоверенного плагина в приложение, которое затем запускает его код с привилегиями этого приложения.
Детали формата
в двух словах- Локаль Ruby/Rails I18n или гем .bundle (скомпилированное расширение) - В macOS скомпилированное расширение Ruby C представляет собой загружаемый пакет Mach-O с именем *.bundle внутри гема.
- Siemens NX / «пакет» данных общего приложения - Некоторые приложения записывают проприетарный однофайловый .bundle со сгруппированными настройками или ресурсами.
Программы, открывающие файлы BUNDLE
Технические подробности
глубокая спецификация| Тип формата | Пакет каталогов macOS - папка, которую Finder представляет как единый непрозрачный файл |
| Разработчик | Apple |
| Внутренняя структура | Папка `Contents/` с `Info.plist`, `MacOS/` (исполняемый файл Mach-O), `Resources/` и необязательными подкаталогами `Frameworks/` и `PlugIns/` |
| Код типа пакета | `BNDL` - устанавливается как `CFBundlePackageType` в `Info.plist` |
| Формат исполняемого файла | Бинарный файл Mach-O; магические байты `FE ED FA CE` (32-бит BE), `CF FA ED FE` (64-бит LE) или `CA FE BA BE` (универсальный/fat binary) |
| Манифест метаданных | `Info.plist` - XML или бинарный список свойств, объявляющий идентификатор пакета, версию, имя исполняемого файла и тип пакета |
| MIME-тип | `application/octet-stream`; также сообщается как `inode/directory` в системах POSIX |
| Контейнер файловой системы | Каталог HFS+ или APFS с установленным битом пакета; отображается как единый элемент в Finder |
| Подпись кода | Исполняемый файл Mach-O внутри пакета может быть подписан с помощью `codesign`; это контролируется Gatekeeper и нотариальным заверением в macOS 10.15+ |
| Поддержка платформ | macOS (основная); iOS и iPadOS (загружаемые пакеты, встроенные в пакеты `.app`); изначально NeXTSTEP |
| Типичный размер файла | От десятков КБ до десятков МБ, в зависимости от кода плагина и включенных ресурсов |
| Кодировка | Смешанная - бинарный исполняемый файл Mach-O плюс `Info.plist` в формате XML или бинарном формате и текстовые файлы ресурсов |
| Поведение в Windows | Скопированный пакет отображается как обычная папка; семантика пакетов macOS в Windows отсутствует |
| Метод идентификации | Идентифицируется по суффиксу имени каталога `.bundle` и наличию `Contents/Info.plist`; магических байтов на уровне файла не существует |
| Идентификатор пакета | Каждый `.bundle` несет строку `CFBundleIdentifier` в формате обратного DNS (например, `com.example.plugin`), используемую для уникальности и подписи кода |
| Выпущен | 1990s (NeXTSTEP bundle concept); formalized in Mac OS X 10.0, 2001 |
| Последняя версия | Modern Core Foundation / Foundation bundle layout (current macOS) |
| Открыть стандартное | Да · без роялти |
| Спецификация | developer.apple.com |
Конвертации BUNDLE
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах BUNDLE.