|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista » 7 / 2008 R2 - Многовариантная установка Microsoft Windows 7 x64 |
|
|
7 / 2008 R2 - Многовариантная установка Microsoft Windows 7 x64
|
|
Новый участник Сообщения: 3 |
К сожалению, на habrahabr эти мысли не были востребованы.
Ниже идет сама статья. Идея написания статьи пришла в голову давно, но по сложившимся обстоятельствам вспомнил именно сегодня. Некоторое время назад (можно сказать уже довольно давно) я замучился по просьбам знакомых и друзей переставлять Windows 7 на их ноутбуках/стационарных ПК после очередной “супер новой программы” или неумелого обращения с ПК. Тут можно еще сказать о том, что у самого тоже стоит Windows 7 x64 по сложившимся обстоятельствам – это главная причина статьи т.к. для х86 способов очень много. Естественно запросы и железо у людей различно (да и лицензии для разных версий ОС). В тот момент я и начал искать на животрепещущие ответы на интересующие меня вопросы: как автоматизировать процесс переустановки и добавить свои опции. Windows Automatic Installation Kit – специальный пакет инструментов Microsoft, который должен помочь в процессе развертывания ОС. С самого начала я хотел просто создать файл ответов. Да, признаюсь – некоторое время меня вполне устраивали 2 USB-брелка с полуавтоматической установкой с кучей скриптов в зависимости от редакции. А потом захотелось оптимизации места… Продолжая читать форум и статьи на OS Zone, я открыл для себя способ “склеивания” дистрибутивов различной разрядности, но в итоге я получил большую проблему в структуре диска – Win PE использовалась х86 и, естественно, восстановление системы x64 было невозможно. Мне пришлось смириться с этим горем. Но, как оказалось, ненадолго… Скорее всего, все слышали о скриптовом языке администрирования для Windows под названием AutoIt. В один прекрасный день мне нужно было автоматизировать какое-то мелкое действие, и я наткнулся на AutoIt. Как относится моя ситуация и AutoIt? На первый взгляд совершенно никакой. Дело в том, что этот язык может рисовать и GUI, причем с помощью утилиты из комплекта под названием Aut2exe_x64 можно компилировать нативные х64 exe-скрипты. Забавные интерактивные приложения в некоторых случаях действительно полезны. Win PE – специализированная облегченная версия Windows, предназначенная для запуска со съемных носителей. Именно из неё мы и начинаем установку Vista/7. К сожалению, Win PE x64 не способна работать с x86 приложениями. Раз это уже урезанная система (а не текстовый режим как в XP), то и возможностей у нас гораздо больше. После непродолжительного поиска я наткнулся на подтверждение моих догадок: установка запускается процессом winpeshl.exe (есть и ini файл настройки), который вызывается при загрузки Win PE, запускает setup.exe в корне системного диска (для PE имя этого диска всегда X: ). У Setup.exe же есть параметр /unnatend: <путь до файла ответов>. Тут у меня и появилась идея! Идея в том, чтобы перехватить запуск setup.exe и вывести свою программку с необходимым мне внешним видом и настройками. Так же мы можем запускать наши любые х64 программы в среде Win PE (в разумных пределах — очень урезанная ОС). Сразу оговорюсь, приведенный исходники покажутся некоторым очень неопрятными, непрофессиональными или не оптимизированными – так и есть. Я хочу показать лишь идею. Далекий я от профессионального программирования и скриптинга. Первый шаг: Необходимо «нарисовать наше меню для установки», задать опции и скомпилировать скрипт в exe-файл. Напоминаю: компилировать нужно в х64 бит варианте. Исходники программы-меню + изображения для Win PE на AutoIt3. Для образа с двумя редакциями: Home Premium, Professional #include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; main form
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Opt("GUIOnEventMode", 1)
$Form1 = GUICreate("Установка", 232, 400)
GUISetBkColor(0xFFFFFF)
GUICtrlCreatePic(@ScriptDir & "\Images\bek6.bmp", 0, 0, 232, 400)
GUICtrlSetState(-1, $GUI_DISABLE)
$Form1context = GUICtrlCreateContextMenu()
$MenuItem1 = GUICtrlCreateMenuItem("О программе", $Form1context)
GUICtrlSetOnEvent(-1, "MenuItem1Click")
$Group1 = GUICtrlCreateGroup("", 8, 179, 217, 9)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Pic1 = GUICtrlCreatePic(@ScriptDir & "\Images\button.bmp", 24, 48, 180, 36)
GUICtrlSetOnEvent(-1, "Pic1Click")
$Pic2 = GUICtrlCreatePic(@ScriptDir & "\Images\button.bmp", 24, 100, 180, 36)
GUICtrlSetOnEvent(-1, "Pic2Click")
$Pic3 = GUICtrlCreatePic(@ScriptDir & "\Images\button.bmp", 24, 197, 180, 36)
GUICtrlSetOnEvent(-1, "Pic3Click")
$Pic4 = GUICtrlCreatePic(@ScriptDir & "\Images\button.bmp", 24, 244, 180, 36)
GUICtrlSetOnEvent(-1, "Pic4Click")
$Pic5 = GUICtrlCreatePic(@ScriptDir & "\Images\button.bmp", 24, 291, 180, 36)
GUICtrlSetOnEvent(-1, "RecClick")
$Pic6 = GUICtrlCreatePic(@ScriptDir & "\Images\button.bmp", 24, 338, 180, 36)
GUICtrlSetOnEvent(-1, "CMDClick")
$Label1 = GUICtrlCreateLabel("Выберите действие:", 10, 14, 220, 24,$SS_CENTER)
GUICtrlSetFont(-1, 14, 400, 0, 'Tahoma')
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xC0C0C0)
GUICtrlCreateLabel('Обычная установка' ,48, 56, 140, 18, $SS_CENTER)
GUICtrlSetFont(-1, 10, 400, 0, 'Tahoma')
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetcolor(-1, 0xFFFFFF)
GUICtrlCreateLabel('Автоматическая установка' ,33, 108, 170, 18, $SS_CENTER)
GUICtrlSetFont(-1, 10, 400, 0, 'Tahoma')
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetcolor(-1, 0xFFFFFF)
GUICtrlCreateLabel('Far Manager' ,48, 205, 140, 18, $SS_CENTER)
GUICtrlSetFont(-1, 11, 400, 0, 'Tahoma')
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetcolor(-1, 0xFFFFFF)
GUICtrlCreateLabel('Start GimageX ' ,48, 253, 140, 18, $SS_CENTER)
GUICtrlSetFont(-1, 11, 400, 0, 'Tahoma')
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetcolor(-1, 0xFFFFFF)
GUICtrlCreateLabel("Восстановление", 41, 300, 140, 24,$SS_CENTER)
GUICtrlSetFont(-1, 11, 400, 0, 'Tahoma')
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlCreateLabel("Командная строка", 41, 346, 140, 24,$SS_CENTER)
GUICtrlSetFont(-1, 11, 400, 0, 'Tahoma')
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xFFFFFF)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; About
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$Form2 = GUICreate("О программе", 408, 248, 619, 147)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form2Close")
GUISetBkColor(0xFFFFFF)
GUICtrlCreatePic(@ScriptDir & '\images\bek6.bmp', 0, 0, 408, 248)
GUICtrlSetState(-1, $GUI_DISABLE)
$GroupBox1 = GUICtrlCreateGroup("", 16, 16, 377, 185)
$Image1 = GUICtrlCreatePic(@ScriptDir & "\images\cat.jpg", 24, 32, 105, 97)
$Label1 = GUICtrlCreateLabel("Продукт: Оболочка для установки Win 7 x64", 136, 32, 250, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label2 = GUICtrlCreateLabel("Версия: 1.5.0", 136, 56, 79, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 8, 800, 0, "Tahoma")
GUICtrlSetColor(-1, 0xFFFFFF)
$Label3 = GUICtrlCreateLabel("Автор: DarkHunter", 24, 144, 160, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 8, 800, 0, "Tahoma")
GUICtrlSetColor(-1, 0xFFFFFF)
$Label5 = GUICtrlCreateLabel(" test field", 20, 168, 220, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 8, 800, 0, "Tahoma")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("&OK", 172, 208, 75, 25, 0)
GUICtrlSetOnEvent(-1, "Button1Click")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Automate menu
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$Form3 = GUICreate("Установка", 232, 187, 192, 139)
GUISetBkColor(0xFFFFFF)
GUICtrlCreatePic(@ScriptDir & '\images\bek6.bmp', 0, 0, 408, 248)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form3Close")
$Pic5 = GUICtrlCreatePic(@ScriptDir & "\images\button.bmp", 24, 32, 188, 36)
GUICtrlSetOnEvent(-1, "Pic5Click")
$Pic6 = GUICtrlCreatePic(@ScriptDir & "\images\button.bmp", 24, 98, 188, 36)
GUICtrlSetOnEvent(-1, "Pic6Click")
GUICtrlCreateLabel("Автоматическая Win 7 x64 Pro", 33, 42, 180, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 8, 800, 0, "Tahoma")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlCreateLabel("Автоматическая Win 7 x64 HP", 33, 112, 180, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 8, 800, 0, "Tahoma")
GUICtrlSetColor(-1, 0xFFFFFF)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
GUISetState(@SW_SHOW, $Form1)
While 1
Sleep(100)
WEnd
Func Button1Click()
GUISetState(@SW_HIDE, $Form2)
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func MenuItem1Click()
GUISetState(@SW_SHOW, $Form2)
EndFunc
Func Pic1Click()
Sleep(150)
RunWait(@HomeDrive & "\Setup.exe /unattend:" & @ScriptDir & "\scripts\Default.xml")
EndFunc
Func Pic2Click()
Sleep(150)
GUISetState(@SW_HIDE, $Form1)
GUISetState(@SW_SHOW, $Form3)
EndFunc
Func Pic3Click()
Sleep(150)
Run(@ProgramFilesDir & "\Far\Far.exe")
EndFunc
Func Pic4Click()
Sleep(150)
Run(@ProgramFilesDir & "\GimageX\gimagex.exe")
EndFunc
Func Form1Close()
Exit
EndFunc
Func Form2Close()
Exit
EndFunc
Func Form3Close()
Exit
EndFunc
Func Pic5Click()
Sleep(150)
GUISetState(@SW_HIDE, $Form3)
RunWait(@HomeDrive & "\Setup.exe /unattend:" & @ScriptDir & "\scripts\pro.xml")
EndFunc
Func Pic6Click()
Sleep(150)
GUISetState(@SW_HIDE, $Form3)
RunWait(@HomeDrive & "\Setup.exe /unattend:" & @ScriptDir & "\scripts\HP.xml")
EndFunc
func RecClick()
sleep(150)
RunWait(@HomeDrive & "\sources\recovery\RecEnv.exe")
EndFunc
Func CMDClick()
sleep(150)
Run(@HomeDrive & "\Windows\System32\Cmd.exe", @HomeDrive & "\Windows\System32\")
EndFunc
Второй шаг: Для второго шага нам понадобится: 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 В папке \Sources\ у нас будет папка с нашим «загрузчиком». Мой пример: Где \Images\ папка с ресурсами оформления загрузчика; \scripts\ — папка с файлами ответов для каждой редакции Windows* Loader.exe — сам скрипт В папке \Program Files\ необходимые нам программы (мы же не забыли добавить их в наш скрипт?), которые мы хотим запускать из установочного диска (обязательно натив х64) В папке \Windows\ находится такая структура: Где в winpeshl.ini находится путь до нашего Loader.exe. Пример содержимого winpeshl.ini: Третий шаг: Теперь полученную структуру папок мы копируем в \MountTemp и соглашаемся на слияние. Все. С Win PE можно покончить. Выполняем в консоли: Четвертый шаг: Теперь создаем iso образ и записываем его на диск/USB привычным вам методом. Итог: * Благодаря /unnatend: ключу Setup.exe можно задавать для различных редакций множественный варианты файлов ответов. В похождениях были изучены справочные материалы команды DISM и сайта OS Zone Спасибо Boa Soft за идею! Спасибо за внимание! |
|
|
Отправлено: 23:27, 30-10-2011 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Установка - Установка Windows 7 x32 Ultimate на раздел с Windows 7 x64 Home Premium | Кузьмич111 | Microsoft Windows 7 | 8 | 21-03-2011 12:25 | |
| 2008 R2 - Установка Windows Server 2008 R2 x64 | elektron05 | Windows Server 2008/2008 R2 | 0 | 27-02-2010 13:34 | |
| Интернет - [решено] Почему не могу найти в Windows 7 X64 Microsoft Outlook Express? | Baw17 | Microsoft Windows 7 | 4 | 07-10-2009 13:43 | |
| Установка драйвера принтера на Windows x64 | dim_alf | Microsoft Windows NT/2000/2003 | 2 | 12-09-2008 11:00 | |
| Установка - Удаленная установка принтеров в Windows XP x64 | nikrich | Microsoft Windows 2000/XP | 0 | 11-10-2007 07:45 | |
|