Что такое формат файла BPL?
.bpl - это файл Borland Package Library, специализированная Windows DLL, используемая Embarcadero Delphi и C++Builder для распространения повторно используемых пакетов компонентов. Введенная в Delphi 3, система пакетов позволяет компонентам VCL и FireMonkey совместно использоваться несколькими приложениями во время выполнения, а не встраиваться статически в каждый исполняемый файл.
Структурно файл .bpl представляет собой стандартный Windows PE (Portable Executable) .dll, идентифицируемый по заголовку MZ, с дополнительной секцией ресурсов PACKAGEINFO, в которой перечислены модули Delphi, содержащиеся в пакете. Существует два типа: runtime packages (пакеты времени выполнения), распространяемые вместе с приложением и загружаемые при запуске (например, vcl280.bpl поставляется с приложениями Delphi 11), и design-time packages (пакеты времени разработки), которые регистрируют компоненты в IDE и никогда не передаются конечным пользователям.
Файлы .bpl не являются переносимыми между версиями компилятора Delphi: пакет, скомпилированный для Delphi 10 Seattle, не загрузится в Delphi 11 Alexandria и должен быть перекомпилирован. У каждого пакета есть сопутствующие файлы: .dcp (Delphi Compiled Package), содержащий метаданные компоновщика, и для C++Builder - библиотека импорта .bpi. Исходный проект пакета хранится в файле .dpk.
Поскольку файлы .bpl являются валидными Windows DLL, стандартные инструменты PE, такие как Dependency Walker, могут проверять их импорт и экспорт. Они загружаются во время выполнения с помощью стандартного вызова Windows LoadLibrary.
Безопасность и защита
РИСК: MEDIUMФайлы BPL являются библиотеками DLL; вредоносный BPL, помещенный в директорию приложения, может исполнять произвольный код через подмену DLL (DLL hijacking). Устанавливайте файлы BPL только от доверенных поставщиков компонентов Delphi. Ошибка «BPL file missing» часто побуждает пользователей скачивать файлы BPL с неофициальных сайтов - избегайте этого.
Детали формата
в двух словах- Пакет плагинов Symbian OS/Nokia - Некоторые инструменты разработки Symbian/Nokia также использовали расширение .bpl для пакетов прошивок или плагинов; не связано с Delphi.
Программы, открывающие файлы BPL
Технические подробности
глубокая спецификация| Базовый бинарный формат | Windows PE (Portable Executable) DLL |
| Магические байты | `MZ` (4D 5A) - стандартный заголовок Windows PE |
| Порядок байтов | Little-endian |
| Дополнительная секция PE | Ресурс `PACKAGEINFO` со списком содержащихся модулей Delphi/C++Builder |
| Типы пакетов | Runtime (распространяемые с приложением) и design-time (только для регистрации в IDE) |
| Портативность версий | Должен быть перекомпилирован для каждой версии компилятора - несовместим между версиями |
| Сопутствующие файлы | `.dcp` (метаданные компоновщика), `.bpi` (библиотека импорта C++Builder), `.dpk` (исходник пакета) |
| Типичный размер | 84 КБ - 2 МБ |
| Платформа | Windows (основная); macOS и Linux через кроссплатформенные пакеты FireMonkey |
| Загрузка во время выполнения | Стандартные функции Windows `LoadLibrary` / `GetProcAddress` |
| Связь с компилятором | Внутренняя метка версии RTL; несоответствие версий вызывает ошибку загрузки при запуске |
| Роль в IDE | Пакеты времени разработки регистрируют иконки палитры компонентов и редакторы свойств в RAD Studio |
| Выпущен | 1997 (Delphi 3 - first version with package support) |
| Последняя версия | RAD Studio 13 Florence (2025); BPL format stable since Delphi 3 |
| Спецификация | docwiki.embarcadero.com |