При попытке автоматизации процесса инсталляции конфигураций из дистрибутивов 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:ДиректорияРаспаковки'
При использовании второй функции архивы в исходной папке могут находиться на любом уровне вложенности.
Реализация на python уж несколько лет как воткрытом доступе лежит. Там конечно не было формализованного описания, но код предельно простой и все итак должно быть понятно.
Прекрасно распаковывается обычным архиваторным плагином для Тотала.
(1) Эту штуку не видел, спасибо. Если бы сразу нашёл, может, не стал бы свою писать. Ну, лучше больше, чем меньше.
(2) Один файл — может, а как насчёт сотни?
Какой смысл извлечения всех файлов архива, если часто требуется только CF или DT ?