DIANTZ — создание CAB-архивов в командной строке Windows

DIANTZ — псевдоним MAKECAB для упаковки файлов в формат .cab из CMD. Синтаксис, ключи, примеры создания и распаковки CAB-архивов, частые ошибки и альтернативы.

Команда DIANTZ — это псевдоним утилиты MAKECAB, встроенной в Windows для создания архивов в формате Microsoft Cabinet (.cab). CAB-файлы используются в дистрибутивах Windows Update, пакетах драйверов и установщиках MSI для хранения сжатых файлов в одном контейнере.

Синтаксис команды DIANTZ

DIANTZ [/V[n]] [/D var=value ...] [/L dir] исходный_файл [файл_назначения]
DIANTZ [/V[n]] [/D var=value ...] /F директивный_файл ...

Плейсхолдеры:

  • исходный_файл — путь к файлу, который нужно упаковать в CAB.
  • файл_назначения — имя выходного CAB-архива (если не указан, формируется автоматически).
  • директивный_файл — файл директив (.ddf) с описанием структуры CAB-архива для сложных случаев.
  • var=value — переменная конфигурации (например, Cabinet=ON, MaxDiskSize=1444).

Ключи и параметры

Ключ Описание Пример
/V[n] Уровень подробности вывода: 0 — тихий режим, 1 (по умолчанию) — стандартный, 2 — подробный DIANTZ /V2 file.txt archive.cab
/D var=value Задать переменную директивы прямо из командной строки без .ddf файла DIANTZ /D Cabinet=ON /D MaxDiskSize=1444 file.txt out.cab
/L dir Папка для сохранения выходного CAB-файла (вместо текущей директории) DIANTZ /L C:\Output file.txt archive.cab
/F файл.ddf Использовать файл директив Diamond Directive File для описания содержимого архива DIANTZ /F setup.ddf

Примеры использования

Упаковать один файл в CAB-архив

Простейший случай — сжать один файл для передачи или установки.

DIANTZ C:\logs\app.log C:\Output\app.cab

Файл app.log будет сжат и помещён в app.cab. Степень сжатия зависит от типа содержимого — текстовые файлы сжимаются значительно лучше двоичных.

Упаковать несколько файлов через файл директив

Для упаковки нескольких файлов с контролем структуры создаётся .ddf файл. Пример setup.ddf:

; setup.ddf
.OPTION EXPLICIT
.Set CabinetNameTemplate=setup.cab
.Set DiskDirectoryTemplate=C:\Output
.Set Cabinet=ON
.Set MaxDiskSize=0

C:\dist\readme.txt
C:\dist\setup.exe
C:\dist\config.ini

Запуск:

DIANTZ /F setup.ddf /V1

Результат — файл C:\Output\setup.cab, содержащий три файла.

Упаковка с подробным выводом для диагностики

При отладке сборочного процесса полезно видеть, что именно добавляется в архив.

DIANTZ /V2 /D Cabinet=ON C:\build\app.exe C:\Output\app.cab

Режим /V2 выведет каждый добавляемый файл, размер до и после сжатия, коэффициент компрессии.

Сохранить CAB-файл в отдельную папку

Если нужно чётко разделить рабочие файлы и готовые архивы:

DIANTZ /L C:\Release\Cabs driver.inf C:\Release\Cabs\driver.cab

Ключ /L задаёт базовую папку для выходных файлов при работе с .ddf директивами.

Распаковать CAB-архив (через EXPAND)

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

EXPAND C:\Output\app.cab -F:* C:\Extracted\

Флаг -F:* извлечёт все файлы из архива в папку C:\Extracted\.

Проверить содержимое CAB без распаковки

Для просмотра списка файлов внутри архива используйте EXPAND с ключом -D:

EXPAND -D C:\Output\app.cab

Команда выведет список файлов и их размеры без извлечения.

Частые ошибки и решения

Ошибка / симптом Причина Решение
«DIANTZ не является внутренней или внешней командой» В некоторых версиях Windows DIANTZ.EXE отсутствует или не добавлен в PATH Использовать вместо него MAKECAB — это тот же инструмент с более стабильным присутствием в системе
Ошибка в .ddf файле: «ERROR: Syntax error» Неверный формат директивного файла: лишние пробелы, неправильный разделитель или отсутствие обязательных директив Проверить отступы и кавычки; убедиться, что .ddf сохранён в кодировке ANSI (не UTF-8 с BOM)
Выходной CAB-файл не создаётся, нет ошибок Папка назначения не существует Создать папку вручную перед запуском: mkdir C:\Output
CAB-файл создан, но некоторые файлы в нём отсутствуют Пути к файлам в .ddf содержат пробелы без кавычек Заключить пути с пробелами в кавычки: "C:\My Files\app.exe"
EXPAND не может открыть CAB, созданный DIANTZ CAB повреждён из-за прерванной записи или нехватки места на диске Проверить свободное место на диске назначения; повторить создание архива

Когда применять, а когда нет

Команда DIANTZ (=MAKECAB) актуальна при сборке пакетов драйверов (.inf + .sys), создании дистрибутивов для Windows Installer и автоматизации упаковки файлов в CAB-формате для последующей установки через EXPAND или msiexec. Не требует прав администратора.

Не используйте DIANTZ для создания обычных пользовательских архивов вместо ZIP или 7-Zip: инструмент ориентирован на задачи дистрибуции ПО, а не на повседневное архивирование. Для ZIP из командной строки в Windows используйте PowerShell.

Аналог в PowerShell для создания ZIP-архивов: Compress-Archive -Path C:\files\* -DestinationPath C:\Output\archive.zip. Для работы именно с CAB в PowerShell нет встроенного командлета — используйте вызов makecab через Start-Process или &.

FAQ

В чём разница между DIANTZ и MAKECAB?

Функционально — никакой. DIANTZ — это псевдоним (копия или символическая ссылка) MAKECAB.EXE. В некоторых версиях Windows DIANTZ может отсутствовать, тогда как MAKECAB присутствует всегда. Рекомендуется использовать MAKECAB для лучшей совместимости.

Как добавить несколько файлов в CAB без .ddf файла?

Стандартный синтаксис DIANTZ позволяет указать только один исходный файл напрямую. Для упаковки нескольких файлов необходимо создать .ddf файл директив. Альтернатива — вызов MAKECAB несколько раз с параметром продолжения кабинета.

Можно ли задать уровень сжатия в DIANTZ?

Метод сжатия задаётся через директиву .Set CompressionType в .ddf файле. Доступные значения: NONE, MSZIP (аналог DEFLATE), LZX (лучшее сжатие). Пример: .Set CompressionType=LZX.

Как распаковать CAB-архив из командной строки?

Используйте встроенную команду EXPAND: EXPAND архив.cab -F:* папка_назначения\. Также можно открыть .cab файл через Проводник Windows — он отображается как папка.

Работает ли DIANTZ на Windows 10 и 11?

MAKECAB присутствует во всех версиях Windows включая 10 и 11. Сам DIANTZ.EXE может отсутствовать в системе — в таком случае используйте MAKECAB с идентичным синтаксисом.

Оцените статью
( Пока оценок нет )
MW10
Добавить комментарий

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