Описание формата EFD-файлов и скрипт для распаковки

Дистрибутивы конфигураций 1С используют нестандартный формат архива с расширением EFD, документация по которому в публичном доступе отсутствует. Данная статья содержит описание формата, сделанное на основе его анализа, и PowerShell-скрипт для извлечения содержимого архива, результатом работы которого является помещение содержащихся в архиве файлов в указанную директорию.

При попытке автоматизации процесса инсталляции конфигураций из дистрибутивов 1С столкнулся, как и многие, с тем, что дистрибутив использует архив нестандартного формата EFD, а штатная setup.exe не понимает никаких ключей и всегда требует взаимодействия через GUI, что при установке 200+ дистрибутивов становится проблематичным. Исчерпывающее описание архива не нашёл, максимум наткнулся на полезное упоминание об использовании алгоритма deflate, и решил восполнить пробел, сделав своё. Готовые утилиты для распаковки, в принципе, есть (например, //infostart.ru/public/710201/), но решил написать PS-скрипт для независимости от наличия самой 1С и для кроссплатформенности. Результат трудов представлен в приложенных файлах.

Для использования скрипта надо, во-первых, выполнить его в контексте текущей сессии PowerShell. Например, если скрипт находится в текущей директории:

. .Extract-EfdFile.ps1

(Точка в начале строки и пробел после неё обязательны, в противном случае скрипт выполнится в дочернем шелле, и в текущей сессии функции останутся не определены.)

Далее можно вызывать функции Extract-EfdFile и Extract-EfdFiles для разархивации одного архива или сразу нескольких.

Extract-EfdFile 'my.efd' 'C:ДиректорияРаспаковки'

Extract-EfdFiles 'C:ДиректорияСАрхивами' 'C:ДиректорияРаспаковки'

При использовании второй функции архивы в исходной папке могут находиться на любом уровне вложенности.

5 Comments

  1. Infactum

    Реализация на python уж несколько лет как в открытом доступе лежит. Там конечно не было формализованного описания, но код предельно простой и все итак должно быть понятно.

    Reply ↓
  2. Поручик

    Прекрасно распаковывается обычным архиваторным плагином для Тотала.

    Reply ↓
  3. snurk

    (1) Эту штуку не видел, спасибо. Если бы сразу нашёл, может, не стал бы свою писать. Ну, лучше больше, чем меньше.

    Reply ↓
  4. snurk

    (2) Один файл — может, а как насчёт сотни?

    Reply ↓
  5. SerVer1C

    Какой смысл извлечения всех файлов архива, если часто требуется только CF или DT ?

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *