Как установить (интегрировать) DISM 10 на Windows 7, заменив «родной» DISM 6.1?
Пишу скрипты интерпретатора команд (CMD) для создания "сборок" Windows путём выполнения команд DISM (интеграция обновлений, отключение компонентов, сжатие, экспорт и т.д.). Обслуживать автономные образы Windows (wim-файлы) можно версией DISM не ниже чем сам образ! Проблема в том, что на моём основном компьютере установлена Windows 7, а если мне нужно обработать образ Windows 8.1 или 10, то приходится на тестовом компьютере устанавливать нужную ОС, и собирать "сборку" на нём.
На Windows 7 можно установить, например, последний ADK для Windows 10 (1803), который содержит DISM 10. Но файл dism.exe новой версии не заменяет собой поставляемый с Windows 7, а размещается в папке установки "Windows Kits". При этом создаётся ярлык в меню Пуск для запуска командной оболочки с "особыми параметрами" откуда становятся доступными возможности DISM 10 путём "ручного" ввода команд. Естественно, автоматическое выполнение команд DISM 10 из скрипта недоступно, так как система в случае обнаружения команды dism в скрипте обращается к "родной" DISM 6.1.
Как сделать так, чтобы под Windows 7 можно было обслуживать автономные образы новых версий ОС?
Ezhyg, а подробнее можно? Вот есть следующие пути:
DISM 6.1 x86: C:\Windows\System32\Dism.exe
DISM 6.1 x64: C:\Windows\SysWOW64\Dism.exe
DISM 10 x86: C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\x86\DISM\dism.exe
DISM 10 x64: C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\DISM\dism.exe
Что прописать в PATH чтобы из скрипта вызывалась версия 10, нужной разрядности?
Или, ещё вариант, указать в параметрах для выполняемого Dism 10-ки другие переменные, в частности PATH указывающий на каталог ADK. Точно не подскажу, сейчас нет под рукой ADK, да и давно его не видел уже :(. Но в батнике можно указать временные переменные среды через set
Погоди, а разве в новом ADK работают не через PowerShell?
И не в PATH, а просто указывать в скрипте полный путь к нужному файлу.
- тогда скрипт не будет универсальным и станет жестко привязан к структуре папок хоста. А на счёт PATH написал ниже - вроде заработало, а потом оказалось что не всё.
Решение такое: заменять "родной" DISM семёрки не нужно, а можно просто внести изменения в PATH. До параметра %SystemRoot%\system32; нужно внести такие данные: C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\DISM;
Работает!
З.Ы.
В работе выяснилось, что не всё работает! Так, например, из скрипта не выполнилась команда DISM /Get-ProvisionedAppxPackage - просмотр списка универсальных приложений. В логе ошибки: невозможно загрузить msi.dll, отсутствие команды /Get-ProvisionedAppxPackage.
Ezhyg, разобрался - проблема в ADK. Даже если не трогать PATH, а просто запустить "особый" ярлык интерпретатора команд из меню Пуск: "Среда средств развертывания и работы с образами". Затем вручную смонтировать образ Windows 10 и попытаться посмотреть список универсальных приложений командой /Get-ProvisionedAppxPackages, то всё равно получаем Error 87.