Pull to refresh

Многовариантная установка Microsoft Windows 7 x64

Предисловие



Некоторое время назад (можно сказать уже довольно давно) я замучился по просьбам знакомых и друзей переставлять Windows 7 на их ноутбуках/стационарных ПК после очередной “супер новой программы” или неумелого обращения с ПК. Тут можно еще сказать о том, что у самого тоже стоит Windows 7 x64 по сложившимся обстоятельствам – это главная причина статьи т.к. для х86 способов очень много. Естественно запросы и железо у людей различно (да и лицензии для разных версий ОС). В тот момент я и начал искать на животрепещущие ответы на интересующие меня вопросы: как автоматизировать процесс переустановки и добавить свои опции.


WAIK


Windows Automatic Installation Kit – специальный пакет инструментов Microsoft, который должен помочь в процессе развертывания ОС.
С самого начала я хотел просто создать файл ответов. Да, признаюсь – некоторое время меня вполне устраивали 2 USB-брелка с полуавтоматической установкой с кучей скриптов в зависимости от редакции. А потом захотелось оптимизации места…
Продолжая читать форум и статьи на OS Zone, я открыл для себя способ “склеивания” дистрибутивов различной разрядности, но в итоге я получил большую проблему в структуре диска – Win PE использовалась х86 и, естественно, восстановление системы x64 было невозможно. Мне пришлось смириться с этим горем. Но, как оказалось, ненадолго…

AutoIt3


Скорее всего, все слышали о скриптовом языке администрирования для Windows под названием AutoIt. В один прекрасный день мне нужно было автоматизировать какое-то мелкое действие, и я наткнулся на AutoIt. Как относится моя ситуация и AutoIt? На первый взгляд совершенно никакой. Дело в том, что этот язык может рисовать и GUI, причем с помощью утилиты из комплекта под названием Aut2exe_x64 можно компилировать нативные х64 exe-скрипты. Забавные интерактивные приложения в некоторых случаях действительно полезны.

Win PE


Win PE – специализированная облегченная версия Windows, предназначенная для запуска со съемных носителей. Именно из неё мы и начинаем установку Vista/7. К сожалению, Win PE x64 не способна работать с x86 приложениями. Раз это уже урезанная система (а не текстовый режим как в XP), то и и возможностей у нас гораздо больше. После непродолжительного поиска я наткнулся на подтверждение моих догадок: установка запускается процессом winpeshl.exe (есть и ini файл настройки), который вызывается при загрузки Win PE, запускает setup.exe в корне системного диска (для PE имя этого диска всегда X: ). У Setup.exe же есть параметр /unnatend: <путь до файла ответов>.
Тут у меня и появилась идея!

Let's go!


Идея в том, чтобы перехватить запуск setup.exe и вывести свою программку с необходимым мне внешним видом и настройками. Так же мы можем запускать наши любые х64 программы в среде Win PE (в разумных пределах — очень урезаная ОС).
Сразу оговорюсь, приведенный исходники покажутся некоторым очень неопрятным, непрофессиональным или не оптимизированным – так и есть. Я хочу показать лишь идею. Далекий я от профессионального программирования.

Первый шаг:
Необходимо «нарисовать наше меню для установки», задать опции и скомпилировать скрипт в exe-файл.
Напоминаю: компилировать нужно в х64 бит варианте.
Из-за большого объема скрипта я не стал выкладывать его «простыню» в мой пост.

Исходники программы-меню + изображения для Win PE на AutoIt3.
В приложенном архиве полностью готовый для компилирования скрипт со всем моим оформлением.

Второй шаг:
Для второго шага нам понадобится: DISM, который интегрирован уже в Windows 7; образ Windows 7 x64.

— Распаковываем наш образ операционной системы в любую папку.
— Удаляем файл ei.cfg из /sources
— Выделяем гигабайт 10 на диске, создаем там какую-либо папку для временного монтирования Win PE (допустим TempMount)
— Открываем cmd.exe и монтируем boot.wim с индексом 2 из распакованного образа диска в папку TempMount так:
DISM /Mount-Wim /WimFile:<Ваш путь>\sources\boot.wim /Index:2 /MountDir:<путь до папки>TempMount

Теперь необходимо сформировать где-нибудь такую структуру папок:
<Ваш путь>\Program Files\
<Ваш путь>\Sources\
<Ваш путь>\Windows\


В папке \Sources\ у нас будет папка с нашим «загрузчиком».
Мой пример:
\Sources\Loader\Images\
\Sources\Loader\scripts\
\Sources\Loader\Loader.exe


Где \Images\ папка с ресурсами оформления загрузчика;
\scripts\ — папка с файлами ответов для каждой редакции Windows*
Loader.exe — сам скрипт

В папке \Program Files\ необходимые нам программы (мы же не забыли добавить их в наш скрипт?), которые мы хотим запускать из установочного диска (обязательно натив х64)

В папке \Windows\ находится такая структура: \System32\winpeshl.ini
Где в winpeshl.ini находится путь до нашего Loader.exe.

Пример содержимого winpeshl.ini:
[LaunchApps]
%SYSTEMDRIVE%\sources\Loader\loader.exe


Третий шаг:
Теперь полученную структуру папок мы копируем в \MountTemp и соглашаемся на слияние.
Все. С Win PE можно покончить.
Выполняем в консоли:
DISM /UnMount-Wim /MountDir:<Ваш путь>\tempMount /commit

Четвертый шаг:
Теперь создаем iso образ и записываем его на диск/USB привычным вам методом.

Итог:


image
image
image

* Благодаря /unnatend: ключу Setup.exe можно задавать для различных редакций множественный варианты файлов ответов.

В похождениях были изучены справочные материалы команды DISM и сайта OS Zone

Спасибо за внимание!
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.