Как создать CAB-файл: полное руководство по упаковке в Windows

Для упаковки драйвера или набора системных файлов в установочный пакет Windows часто требуется именно формат CAB (Cabinet) — это родной архивный формат Microsoft, который используется в установщиках, обновлениях и дистрибутивах драйверов. Создать такой архив можно штатной утилитой makecab.exe, которая уже встроена в Windows, либо через сторонние архиваторы.

В этой статье разберём все рабочие способы: от простой команды в консоли до создания многотомных архивов через директивные файлы DDF. Отдельно остановимся на типичных ошибках, из-за которых CAB-файл получается битым или не читается установщиком.

Что такое CAB-файл и когда он нужен

Cabinet — это архивный формат с поддержкой сжатия, цифровой подписи и разбиения на тома. Windows использует его повсеместно: пакеты обновлений, файлы драйверов, компоненты системы распространяются именно в виде CAB-архивов. Если вы готовите пакет драйверов для установки через pnputil или собираете собственный установщик, без этого формата не обойтись.

Формат поддерживает несколько алгоритмов сжатия: MSZIP и более эффективный LZX. Для совместимости с системными инструментами важно, чтобы архив был создан корректной утилитой — не каждый сторонний архиватор формирует CAB так, чтобы его приняли установщики Windows.

Способ 1: создание CAB через makecab

Самый надёжный метод — встроенная утилита makecab.exe, которая присутствует в системе по умолчанию. Откройте командную строку (для упаковки системных файлов желательно от имени администратора) и перейдите в папку с исходным файлом командой cd.

Базовый синтаксис упаковки одного файла выглядит так:

makecab имя_файла.ext имя_архива.cab

Например, чтобы упаковать файл драйвера driver.inf, выполните makecab driver.inf driver.cab. Утилита создаст архив в текущей папке и выведет отчёт о степени сжатия. Если нужно упаковать сразу несколько файлов в один CAB, простой команды недостаточно — потребуется DDF-файл, о котором ниже.

⚠️ Внимание: makecab перезаписывает существующий CAB-файл с тем же именем без предупреждения. Перед запуском убедитесь, что в папке нет нужного архива с совпадающим названием.

Способ 2: упаковка нескольких файлов через DDF

Чтобы собрать в один архив целую папку с файлами, создайте директивный файл с расширением .ddf в любом текстовом редакторе. В нём задаются параметры сжатия, имя архива и список включаемых файлов.

Пример содержимого DDF-файла:

.OPTION EXPLICIT

.Set CabinetNameTemplate=package.cab

.Set DiskDirectoryTemplate=.

.Set CompressionType=LZX

.Set Cabinet=on

.Set Compress=on

file1.inf

file2.sys

file3.cat

После этого запустите команду makecab /f package.ddf. Утилита прочитает директивы и соберёт все перечисленные файлы в один архив package.cab. Параметр CompressionType=LZX обеспечивает более плотное сжатие по сравнению со стандартным MSZIP.

☑️ Проверка перед созданием CAB через DDF

Выполнено: 0 / 5

Способ 3: сторонние архиваторы

Если командная строка неудобна, CAB-архивы умеют создавать некоторые графические архиваторы. Возможности зависят от конкретной программы и её версии, поэтому перед использованием проверьте в настройках форматов, поддерживается ли именно создание (а не только распаковка) CAB.

  • 📦 7-Zip — открывает и распаковывает CAB, но создание этого формата не поддерживает;
  • 🗜️ PowerArchiver и подобные коммерческие архиваторы — в ряде версий заявлена запись CAB;
  • 🛠️ IExpress — встроенный в Windows мастер, который упаковывает файлы в CAB вместе с установочным сценарием;
  • 📁 Специализированные утилиты для сборки пакетов драйверов — актуальны для системных администраторов.

Утилита IExpress заслуживает отдельного упоминания: она запускается командой iexpress в окне «Выполнить» и позволяет в пошаговом режиме собрать самораспаковывающийся пакет. Это удобно, когда CAB нужен не сам по себе, а как часть установщика.

📊 Какой способ создания CAB вам удобнее?
makecab через командную строку
DDF-файл для пакетной сборки
Графический архиватор
IExpress с мастером

Сравнение способов создания CAB

Выбор метода зависит от задачи: одиночный файл, пакет драйверов или установочный комплект. Сводная таблица поможет определиться:

СпособСложностьНесколько файловПодходит для драйверов
makecab (одна команда)НизкаяНетДа, для одного файла
makecab + DDFСредняяДаДа, оптимально
IExpressНизкаяДаЧастично
Сторонние архиваторыНизкаяЗависит от программыПроверять совместимость

Проверка и распаковка созданного архива

После создания архива важно убедиться, что он не повреждён и содержит нужные файлы. Для просмотра содержимого без извлечения используйте команду:

expand -D имя_архива.cab

Для полной распаковки в указанную папку выполните expand имя_архива.cab -F:* папка_назначения. Если команда выдаёт ошибку чтения, вероятные причины — прерванный процесс создания, нехватка места на диске в момент упаковки или некорректный DDF-файл. В таком случае удалите битый архив и повторите сборку заново.

⚠️ Внимание: не переименовывайте обычные ZIP или RAR-архивы в расширение .cab — система определяет формат по внутренней структуре, и такой «архив» установщик не примет.
Критичный момент: для пакетов драйверов CAB должен содержать корректный INF-файл и, при необходимости, подписанный CAT-файл — без них установка через системные средства завершится ошибкой.
Почему установщик не принимает мой CAB

Частые причины — архив создан сторонней программой с нестандартной структурой, отсутствует INF-файл в корне архива, нарушена цифровая подпись пакета или CAB повреждён при копировании. Пересоберите архив через makecab и проверьте содержимое командой expand -D.

Типичные ошибки при создании CAB

Разберём проблемы, с которыми чаще всего сталкиваются при упаковке. Во-первых, ошибки путей в DDF: если файлы лежат не в той папке, откуда запущена makecab, укажите полные пути или используйте директиву .Set SourceDir. Во-вторых, конфликт имён — при совпадении имён файлов из разных каталогов часть данных может быть потеряна.

В-третьих, пользователи иногда пытаются упаковать файлы, занятые другими процессами, — например, открытый в редакторе INF. Закройте программы, работающие с исходными файлами, перед запуском утилиты. Наконец, при создании больших архивов следите за свободным местом: временные файлы makecab могут занимать заметный объём.

  • ❌ Опечатка в имени файла внутри DDF — утилита завершится с ошибкой;
  • ❌ Запуск из системной папки без прав администратора — архив не запишется;
  • ❌ Смешение относительных и абсолютных путей в одном DDF;
  • ❌ Попытка упаковать файл, заблокированный другим приложением.