Описание формата 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 не будет опубликован. Обязательные поля помечены *