Работа с wim архивами

Для работы с архивами формата .wim в составе Windows имеется утиллита Dism, (а библиотека wimlib - её опенсурсная альтернатива).
Рассмотрим несколько типовых задач, сначала на примере Dism версии 6.1.7600 (вшит в Windows 7), затем Dism версии 10.0.14393 (вшит в Windows 10).

dism версии 6.1.7600 умеет всего ничего:
  /Get-MountedWimInfo
  /Get-WimInfo
  /Commit-Wim
  /Unmount-Wim
  /Mount-Wim
  /Remount-Wim
  /Cleanup-Wim

Вывести список образов в wim-файле

Dism /Get-WimInfo /WimFile:install.wim
Например install.wim с инсталляционного диска windows 7 содержит четыре образа (имеет смысл обратить внимание на поля Index и Name):

Deployment Image Servicing and Management tool
Version: 6.1.7600.16385

Details for image : install.wim

Index : 1
Name : Windows 7 HOMEBASIC
Description : Windows 7 HOMEBASIC
Size : 11 531 865 453 bytes

Index : 2
Name : Windows 7 HOMEPREMIUM
Description : Windows 7 HOMEPREMIUM
Size : 12 045 241 621 bytes

Index : 3
Name : Windows 7 PROFESSIONAL
Description : Windows 7 PROFESSIONAL
Size : 11 947 613 470 bytes

Index : 4
Name : Windows 7 ULTIMATE
Description : Windows 7 ULTIMATE
Size : 12 110 440 566 bytes

The operation completed successfully.

Посмотреть содержимое образа

Для просмотра содежимого образа, его необходимо смонтировать по индексу или имени (по имени слишком сильное извращение, поэтому привожу пример только с индексом):
Dism /Mount-Wim /WimFile:install.wim /index:3 /MountDir:C:\win7 /ReadOnly
Этой командой мы смонтировали образ "Windows 7 PROFESSIONAL" в директорию C:\win7. По умолчанию, образ монтируется доступным для записи, но ключ /ReadOnly устанавливает режим доступа "только чтение".

Внести изменения в образ

1. Смонтировать нужный образ для изменения (без ключа /ReadOnly):
Dism /Mount-Wim /WimFile:install.wim /index:3 /MountDir:C:\win7
2. Изменить/Заменить/Добавить/Удалить файлы в директории C:\win7 как в любой другой.
3. Отмонтировать образ с сохранением изменений:
Dism /Unmount-Wim /MountDir:C:\Win7 /commit
либо то же самое двумя отдельными командами:
Dism /Commit-Wim /MountDir:C:\win7

Dism /Unmount-Wim /MountDir:C:\Win7 /discard

Посмотреть список всех смонтированных образов (а также их состояние)

Dism /Get-MountedWimInfo

 

Dism версии 10.0.14393 помимо прочего, умеет вот что:

/Split-Image
/Apply-Image

Разбить wim-файл на несколько swm-файлов

Wim - архив файлового типа, раздробить его каким-нибудь dd не получится. Зато получится следующей командой. Может пригодиться, например, когда вы вручную делаете инсталляционную флешку в FAT32 (эта файловая система имеет ограничение на размер файла - максимум 4ГБ). Результирующие swm-файлы должны лежать в каталоге sources. Ключ FileSize воспринимает размер в мегабайтах.
Dism /Split-Image /ImageFile:install.wim /SWMFile:install.swm /FileSize:4096

Применить (распаковать) образ на файловую систему
Dism /Apply-Image /Image-File:install.wim /Index:1 /ApplyDir:D:\ /EA
В случае разбитого на swm файлы архива необходимо указать паттерн именования файлов.
Dism /Apply-Image /Image-File:install.swm /SWMFile:install*.swm /Index:1 /ApplyDir:D:\ /EA
Ключ /EA предписывает устанавливать расширенные аттрибуты файлов.

Вперед