К 2К20 году только ленивый не писал распаковщики форматов 1с-ных файлов. В процессе создания некоторых инструментов понадобился упаковщик CF файлов - пришлось из ответвившегося кода сделать аналог всем известной утилиты V8Unpack. А ещё было обнаружено, что с 16-й платформы 1с изменили формат контейнерных файлов (убрали ограничение в 2 Гб)
onepack умеет распаковывать и обратно запаковывать все cf-подобные файлы (конфигурации, обновления конфигураций, расширения, обработки, отчеты, файлы справок 1с), как старого формата, так и нового формата. Написана под новый и быстрый .Net 5.0 .Net 6.0, поэтому можете пользоваться ей даже в любимых линуксах.
Пример использования (в Win):
onepack -ur file.cf unpackdir
рекурсивно распакует конфигурацию в указанную папку (аналог V8Unpack: ключ -P).
Если просто указать ключ -u, то извлечет файлы только верхнего уровня (также как -U у V8Unpack)
Для обратной сборки используются ключи -pr или -p (у V8Unpack, соответственно: -B или -PA)
Также есть возможность сжатия (deflate) и распаковки (inflate).
Полное описание использования можно увидеть при запуске утилиты без параметров.
Данный проект написан с нуля на C# на основании свободной информации, полученной из описаний форматов восьмофайлов.
В приложенном архиве вы найдете 3 файла: описание фреймворка, на котором выполняется утилита, сам движок (IL-сборка) и приложение для запуска в окнах.
На данный момент это самая продвинутая утилита для распаковки и обратной упаковки контейнерных файлов 1с (с полным спектром поддерживаемых возможностей для данного формата).
<sha256> dd97151012c78dd6a0da473c02f52cd04e61ed2c17b8ce40ff5ee7ecd8c5279f onepack.zip
FAQ:
Q: Для чего может понадобиться данный инструмент?
A: Например, для разборки конфигурации на исходники и дальнейшей ее загрузки в вашу систему контроля версий. Для получения π-кода виртуальной машины 1с для модулей с отсутствующими исходниками (исходники тут получить никак не удастся). Также просто для распаковки внутренних данных 1с по алгоритму Deflate
Q: Я распаковал и запаковал обратно файл, но размер на выходе отличается от исходного.
A: Ничего страшного в этом нет, просто используются альтернативные настройки Deflate-сжатия (у V8Unpack аналогичная ситуация)
Q: Что за папка "_STARTER" при распаковке нового формата?
A: Это распакованная конфа-заглушка для совместимости со старыми платформами.
Q: Совместимы ли утилиты onepack и V8Unpack?
A: Да, почти полностью. Т.е. вы можете сделать полную распаковку одной утилитой и запаковку другой. Исключением является распаковка без извлечения вложенных контейнеров - V8Unpack хранит хэдеры в отдельных файлах, а onepack пишет данную инфу в метаданные самих файлов.
26.01.2023 - Версия 1.5 - Исправлена ошибка сборки cf-контейнеров (внесенная в версии 1.4). Утилита переведена на .Net 6.0.
28.07.2022 - Версия 1.4 - Исправлена ошибка записи новых хэшей при сборке расширений.
27.05.2022 - Версия 1.3 - Добавлен механизм пересчета хэшей при сборке расширений.
11.08.2021 - Версия 1.2 - Исправлена ошибка определения нового формата. Добавлен прогресс выполнения (по кол-ву файлов).
14.12.2020 - Версия 1.1 - Исправлена ошибка при выполнении Deflate-сжатия (режим -d)
Буду рад за любую обоснованную критику, а также за замечания и предложения!
См. также:
DT2CF - Инструмент для извлечения файла конфигурации из файла резервной копии информационной базы (без использования платформы)