Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » Только для экспертов! FAKE-Setup своими руками.

Ответить
Настройки темы
Только для экспертов! FAKE-Setup своими руками.

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Только для экспертов! FAKE-Setup своими руками.

Метод использования Fake-копии SETUP.EXE был придуман неким Pyron с форума MSFN и нынче широко используется для Unattend-пакетов, в основном драйверов (пакеты от Bashrat, BoaSoft и др.). Подробней о том как он фунциклирует можно почитать в мануалах к пакетам и на форумах MSFN. Несмотря на простой алгоритм, для написания EXE-файла нужно быть немного программером, а это ИМХО не совсем справедливо! . Поэтому я решил реализовать его на AutoIT, но здесь ждал облом - AutoIT v.3 напрочь отказывался запускаться в PRE-Setup окружении WinXP, хотя между тем прекрасно работал из под Win2K. К счастью, все заработало на версии 2.64, которая до сих пор доступна для скачивания.

Привожу пример скрипта, где совмещены обе возможности - AutoIT и PreSetup чтобы всегда можно было выбрать удобный интерфейс. Код намеренно не тестировался и может содержать ошибки - кому нужно, тот поймет что к чему. Многое зависит еще от содержимого Presetup.Cmd
Код: Выделить весь код
 HideAutoItWin,On
 SetBatchLines,100

;=======================================================
; Восстанавливаем параметры командной строки
;-------------------------------------------------------
 SetEnv,i,0
 Repeat,%0%
  EnvAdd,i,1
  StringTrimLeft,parm,%i%,0
  SetEnv,CmdLine,%CmdLine% %parm%
 EndRepeat

;=======================================================
; Установка путей к утилитам и драйверам
;-------------------------------------------------------
 SetEnv,DrvTag,drv51
 SetEnv,WrkDir,%SystemDrive%\\Install

;=======================================================
; Установка всех требуемых файлов
;-------------------------------------------------------
 FileInstall,setupORG.exe,%SystemRoot%\\System32\\setupORG.exe
 FileInstall,presetup.cmd,%WrkDir%\\presetup.cmd
 FileInstall,cmdow.exe,%WrkDir%\\cmdow.exe
 FileInstall,7za.exe,%WrkDir%\\7za.exe
 FileInstall,setpath.exe,%WrkDir%\\setpath.exe
 FileInstall,watchdrv.exe,%WrkDir%\\watchdrv.exe

;=======================================================
; Трикс с переименованием
;-------------------------------------------------------
 IfExist,%SystemRoot%\\System32\\Setup.exe,RunWait,CMD /C REN Setup.exe SetupOld.exe,%SystemRoot%\\System32,Hide
 IfExist,%SystemRoot%\\System32\\SetupORG.exe,RunWait,CMD /C REN SetupORG.exe Setup.exe,%SystemRoot%\\System32,Hide

;=======================================================
; Собственно запуск процесса установки
;-------------------------------------------------------
 SetBatchLines,1
;-------------------------------------------------------
 RunWait,CMD /C PreSetup.cmd %DrvTag% %WrkDir%,%WrkDir%\\,Hide
 RunWait,Setup.exe %CmdLine%,%SystemRoot%\\System32

;=======================================================
; Чистим после себя
;-------------------------------------------------------
 RunWait,CMD /C RD /Q /S %WrkDir%,%SystemDrive%\\,Hide
P.S. Несмотря на "убогость" и сложный синтаксис морально-устаревшей версии, использование AutoIT открывает широкие возможности для автоматизации установки, некоторые из которых я еще сам не освоил. Вот только некоторые:
1. Свобода от правки inf-файлов, все инструменты включены уже в один файл - SETUP.EXE, который устанавливается простым копированием.
2. Свобода выбора между WATCHDRV и стандартным AutoIT-методом отслеживания окон, тем более что WATCHDRV отрабатывает не всегда.
3. Возможность условного заполнения реквизитов. Например, загрузив из INI-файла базу всех ПК можно автоматически заполнить имя машины, лицензионный ключ и т.д. Сам не пробЫвал - нужды пока не было.

Отправлено: 12:45, 07-04-2006

 

Пользователь


Сообщения: 125
Благодарности: 9

Профиль | Отправить PM | Цитировать


amel27
Объясни, плз, идею FAKE-Setup. Без этого невозможно понять суть своего предложения.

Отправлено: 10:41, 15-04-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


bogomolv
Ok, осознал. Подправил скрипт - перегнал две строчки из PRESETUP.CMD чтобы смысл был ясен.

Идея проста - оригинальный SETUP.EXE переименовывается в дистрибутиве в SETUPORG а вместо него подкладывают FAKE-копию, которая и запускается установщиком. FAKE-setup выполняет необходимые действия (обычно лишь запускает PRESETUP.CMD), переименовывает все обратно и, наконец, запускает оригинальный SETUP.EXE. Важно, чтобы FAKE-setup не завершал работу в течении всего процесса установки, иначе произойдет прерывание и перезагрузка.

Отправлено: 06:22, 16-04-2006 | #3


(*.*)


Сообщения: 36491
Благодарности: 6675

Профиль | Сайт | Отправить PM | Цитировать


bogomolv
В старой версии статьи об установке драйверов с CD этот способ излагался. Он еще есть в старой оффлайн версии, наверное. И на MSFN он есть на англ.

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 07:21, 16-04-2006 | #4


Пользователь


Сообщения: 125
Благодарности: 9

Профиль | Отправить PM | Цитировать


amel27, Vadikan
Спасибо, понял о чем речь.
Но вопросы к amel27 остались:
Из твоего скрипта не видно, зачем тебе "свобода выбора между WATCHDRV и стандартным AutoIT-методом отслеживания окон", и где и как ты собираешься юзать "возможность условного заполнения реквизитов"?

А вообще-то метод заинтересовал с точки зрения возможности реализации одного трюка, которым давно пользуюсь, но делаю это коряво:
Одним из стандартных приемов установки Windows является выделение на диске раздела под систему с последующим автоматическим переформатированием этого раздела в ходе переустановки системы. Так красиво и элегантно избавляемся от мусора и возможности воспроизведения кривых настроек прежней системы. К тому же в ходе автопереустановки не появляется нарушающий unattend'ность запрос, что делать со старой папкой Windows.
Способ всем хорош, но его условие - наличие свободного раздела. Не все это любят, а неподготовленные пользователи к тому же не умеют им пользоваться, и бесполезно им объяснять, что не надо сохранять свои документы на диске C:!
Я для автоудаления прежней системы использую такую конструкцию:
1. На винчестер кладу заточненный под пользователя дистрибутив со всеми дровами и всеми дополнительными программами (что-то вроде дистрибутива на скрытом разделе ноутбуков Asus).
2. Разворачиваю на диске WinPE (в собственной облегченной сборке).
3. Запуск переустановки системы осуществляется файлом UNATTEND.BAT, который из-под Windows меняет BOOT.INI, создает маркерный файл и отправляет систему на перезагрузку под WinPE:
Код: Выделить весь код
echo Удалить системные файлы>>c:\delwin.bat
bootcfg /default /id 2
shutdown -r -t 0
4. Загрузившаяся WinPE "реагирует" на наличие c:\delwin.bat и запускает:
Код: Выделить весь код
del %DISK%:\delwin.bat
rd /s /q %DISK%:\windows
rd /s /q %DISK%:\docume~1 
rd /s /q %DISK%:\progra~1 
rd /s /q %DISK%:\system~1 
rd /s /q %DISK%:\recycled
rd /s /q %DISK%:\RECYCLER
@dir %DISK%:\
@%DISTR%:
@cd %DISTR%
.\I386\winnt32.exe /s:.\I386 /unattend1:unattend.txt /noreboot
exit
Давно пытаюсь избавиться от этой конструкции, которую сам называю "стол-на-стул". Ведь нужно-то мне совсем немного - научить установщик Windows удалять системные папки на первом "неграфическом" этапе установки...

В принципе, я и свою конструкцию неплохо отточил: перезагрузка и запуск установки из-под WinPE занимают у меня не более 50 сек, нарисовал скрипты автоматизации процесса развертывания WinPE на жестком диске, та же самая WinPE на установочном мультизагрузочном CD служит для подготовки жесткого диска на новом компьютере, а на самом жестком диске WinPE в качестве дополнительной оси неплохо помогает восстановить рухнувшую систему.
Удается даже руководить этими процессами по телефону, подсказывая детям своих друзей и знакомых, что и как нужно сделать, чтобы ОНО опять заработало

Отправлено: 07:41, 17-04-2006 | #5


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


bogomolv
Цитата:
Из твоего скрипта не видно, зачем тебе "свобода выбора между WATCHDRV и стандартным AutoIT-методом отслеживания окон", и где и как ты собираешься юзать "возможность условного заполнения реквизитов"?
1. WATCHDRV срабатывает не всегда, классический пример - дрова в VMware... И по сути - это использование "дыры" в безопасности, которую в любое время могут прикрыть. Кстати, если внимательно читать автора он именно об этом и писал.
2. Это только "мысли вслух"... Как вариант - дождаться окна ввода реквизитов, затем идентифицировать к-либо способом машину (MAC-адрес, BIOS или еще как... тут нужно обмозговать), по этому индексу вытянуть из INI-файла нужную инфу и вставить куда надо.

З.Ы. В AutoIT меня не устраивает только привязка к языку, а собирать титлы окон для всех языков (у меня их три) и систем (тоже три) не очень хочется...

Отправлено: 12:11, 17-04-2006 | #6


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


bogomolv
Цитата:
Давно пытаюсь избавиться от этой конструкции, которую сам называю "стол-на-стул". Ведь нужно-то мне совсем немного - научить установщик Windows удалять системные папки на первом "неграфическом" этапе установки...
ИМХО вполне реально. Примерный алгоритм:
1. Запустить под Windows первую фазу установки (только копирование):
Код: Выделить весь код
winnt32.exe /tempdrive:c /unattend:unattend.txt /noreboot
В результате будут созданы временные каталоги C:\$WIN_NT$.~BT и C:\$WIN_NT$.~LS,
а также BOOT.INI типа:
Код: Выделить весь код
[Boot Loader]
Default=C:\$WIN_NT$.~BT\BOOTSECT.DAT
[Operating Systems]
C:\$WIN_NT$.~BT\BOOTSECT.DAT="Microsoft Windows XP Professional Setup"
2. Сохранить все это хозяйство где-нибудь в укромном месте и восстановить исходный BOOT.INI

3. Проверить содержимое winnt.sif в $WIN_NT$.~BT на предмет строчек:
Код: Выделить весь код
[Unattended]
TargetPath=*
NTUpgrade=No
4. Заменить в $WIN_NT$.~LS SETUP.EXE на Fake-копию, которая перед установкой сделает RD всем каталогам WINDOWS.* (кроме %WINDIR%), ну и дальше по списку...

5. Сваять скрипт, который при запуске копирует коталоги $WIN_NT$.* и BOOT.INI в корень диска C: и перегружает машину, после чего сразу стартует графическая часть Unattend-установки.

З.Ы. Одно "неудобство" - папка %WINDIR% после каждой переустановки будет называться по другому.

Отправлено: 07:23, 18-04-2006 | #7


Пользователь


Сообщения: 125
Благодарности: 9

Профиль | Отправить PM | Цитировать


amel27
Спасибо, буду думать.
На первый взгляд - еще более тяжеловесная конструкция...

Отправлено: 09:08, 18-04-2006 | #8


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


bogomolv
Цитата:
На первый взгляд - еще более тяжеловесная конструкция...
На самом деле первая фаза почти совпадает с методом подготовки дистрибутива Gosh с форума MSFN, готовый дистриб гораздо компактнее и его несложно переделать для установки с CD... Ну и на одну перезагрузку должно получиться меньше.

Отправлено: 11:13, 18-04-2006 | #9


Пользователь


Сообщения: 125
Благодарности: 9

Профиль | Отправить PM | Цитировать


amel27
Цитата:
На самом деле первая фаза почти совпадает с методом подготовки дистрибутива Gosh
Это я сразу понял. Года три назад даже пытался освоить этот метод. Полностью с ним так и не разобрался.
Так и не понял, что представляют собой эти временные каталоги? Насколько они универсальны, и можно ли их использовать для установки на разных машинах? Не является ли этот метод чем-то вроде Sysprep-установки, рекомендуемой для однотипных машин...
Подробности уже подзабыл, но осталась уверенность, что этот метод не для моего подхода, когда я из стандартного дистрибутива и заготовок драйверов и программ общего назначения готовлю дистрибутив, заточенный под конкретного пользователя и его машину (или группу машин).


Отправлено: 06:57, 19-04-2006 | #10



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » Только для экспертов! FAKE-Setup своими руками.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Комп своими руками ddfwefwefweq Выбор отдельных компонентов компьютера и конфигурации в целом 2 04-03-2009 19:50
Proxy/NAT - Внешний прокси своими руками Donner Хочу все знать 5 29-12-2008 02:16
ФТП своими руками... Ronald Microsoft Windows 2000/XP 7 10-01-2007 13:35
Загрузочный CD своими руками Kenobi Хочу все знать 1 09-10-2005 11:21
TTimer своими руками Zur0 Программирование и базы данных 5 27-04-2003 18:17




 
Переход