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

27 Окт
2011

Предисловие

Некоторое время назад (можно сказать уже довольно давно) я замучился по просьбам знакомых и друзей переставлять 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 Спасибо за внимание!
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх