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

Компьютерный форум 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

 

Googler


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

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


bogomolv
Цитата:
что представляют собой эти временные каталоги?
~LS - все файлы дистрибутива явно прописанные в dosnet.inf
~BT - загрузочные файлы (полный набор из загрузочных дискет, только с учетом обновлений)

Цитата:
Насколько они универсальны, и можно ли их использовать для установки на разных машинах? Не является ли этот метод чем-то вроде Sysprep-установки, рекомендуемой для однотипных машин...
К машинам привязки нет, ведь это просто набор файлов (кроме двух файлов ответов, кот. можно удалить). В работе всегда использую только GOSH-дистрибутивы, но они не подходят для повторной установки с HDD (там просто нет winnt32.exe). Мне только один раз попадался дистрибутив (XP SP2 OEM) когда в dosnet.inf были пропущены файлы из txtsetup.inf, приходилось вручную потом копировать в образ.

В контексте твоего вопроса все это можно понимать как отложенную установку, которую можно продолжить при необходимости в любое время.

Последний раз редактировалось amel27, 20-04-2006 в 06:54.


Отправлено: 06:25, 20-04-2006 | #11



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

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


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


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

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


amel27
Спасибо за толковое разъяснение.
А ссылку на свежее описание метода не дашь? У меня сохранилась ссылка только на старое описание, которое уже давно не обновлялось.

Отправлено: 19:46, 20-04-2006 | #12


Googler


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

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


bogomolv
нет, ссылки нет но там практически ничего не изменилось, вот несколько дополнений из личного опыта:

1. Для того чтобы к GOSH-дистрибутиву можно было применять трансформ-паки типа nLite нужно дополнительно скопироватьиз дистрибутива файл dosnet.inf... а если изменения касаются txtsetup.sif, то по окончании процесса скопировать его из i386 в BOOT. Для пакетов драйверов, затрагивающих начальную фазу загрузки (MassStorage) нужно дополнительно скинуть из i386 в BOOT файлы *.sys (только новые).

2. Для локализованных версий нужно дополнительно скопировать bootfont.bin
3. Для XP SP2, 2K3 SP1 файл setupldr.bin взять из дистрибутивов XP SP0/SP1, 2K3 SP0

Отправлено: 05:12, 21-04-2006 | #13


Аватара для Boa Soft

Компьютерный шаман


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

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


Цитата:
Для XP SP2, 2K3 SP1 файл setupldr.bin взять из дистрибутивов XP SP0/SP1, 2K3 SP0
При использовании BCDW, совместимого с SP2 это совершенно не нужно. Новый setupldr.bin патчится нормально.

-------
Человеческая лень - главная движущая сила технического прогресса.


Отправлено: 10:20, 21-04-2006 | #14


Аватара для DmitryOlenin

Ветеран


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

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


Если я понял все правильно, то FAKE-setup делает нечто, после чего передает управление настоящему файлу setup.exe, который отрабатывает после копирования файлов и перезагрузки.
Выше писали о том, как бы все от старой винды почистить, а потом ставить начать, при этом запустив все из Windows.
Так может проще сделать так:
1.
Код: Выделить весь код
winnt32.exe /tempdrive:c /unattend:unattend.txt /noreboot
2. Пишем на чем угодно setup.exe так, чтобы он просто запускал наш батник и закрывался.
3. Батник создаем и кладем его в $WIN_NT$.~LS. Например так: create.bat
Код: Выделить весь код
@echo off
ren "%SystemDrive%\$WIN_NT$.~LS\setup.exe" setup1.exe
copy /y setup.exe "%SystemDrive%\$WIN_NT$.~LS\"
echo @echo off>%SystemDrive%\$WIN_NT$.~LS\dele.bat
echo rd %windir%>>%SystemDrive%\$WIN_NT$.~LS\dele.bat
echo rd %ProgramFiles%>>%SystemDrive%\$WIN_NT$.~LS\dele.bat
echo rd %allusersprofile%>>%SystemDrive%\$WIN_NT$.~LS\dele.bat
echo rd %homepath%>>%SystemDrive%\$WIN_NT$.~LS\dele.bat
echo del setup.exe>>%SystemDrive%\$WIN_NT$.~LS\dele.bat
echo ren setup1.exe setup.exe>>%SystemDrive%\$WIN_NT$.~LS\dele.bat
echo setup.exe>>%SystemDrive%\$WIN_NT$.~LS\dele.bat
Итого скрипт для установки из винды будет состоять из 3х строк.
Установка файлов винды, копирование батника, перезагрузка компа.

Или я чего-то не понял? Если так - поясните пожалуйста

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


Аватара для DmitryOlenin

Ветеран


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

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


Только что проверил на виртуалке.
У меня почему-то не создается директория [и]$WIN_NT$.~LS[/b]
Но при этом инсталляция идет(проверил после перезагрузки). Более того, директория $WIN_NT$.~BT занимает около 10Мб.
Кто-нибудь может обьяснить, как такое может быть?

P.S.
Проверил dosnet.inf, он далеко не пустой.

-----------
Дело в файле автоустановки (*.sif). Попробовал без него ввести серийник и прочее руками - все ок.
Может галочка - копировать все файлы не ставится по умолчанию?

---------------
Точно, только что проверил. По-умолчанию эта галка не стоит...

Последний раз редактировалось DmitryOlenin, 22-04-2006 в 00:25.


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


Googler


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

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


DmitryOlenin
Цитата:
Если я понял все правильно, то FAKE-setup делает нечто, после чего передает управление настоящему файлу setup.exe, который отрабатывает после копирования файлов и перезагрузки.
Именно так, причем независимо от способа установки - с CD или HDD.
Цитата:
2. Пишем на чем угодно setup.exe так, чтобы он просто запускал наш батник и закрывался.
3. Батник создаем и кладем его в $WIN_NT$.~LS. Например так: create.bat
Попробуй хоть раз написать "на чем угодно setup.exe", например на AutoIt и перед запуском оригинального SETUP запусти "CDM /K" - обнаружишь много для себя интересного, например что %windir% удалить уже невозможно, так как это текущая папка для новой WINDOWS... Смысл строчки "del setup.exe" тоже не понятен, впрочем она и не отработает.

EDIT: извиняюсь, насчет %windir% поторопился - действительно, CMD создается еще в старой Windows... Текст не стал править, остальное остается в силе.

Последний раз редактировалось amel27, 22-04-2006 в 08:44.


Отправлено: 08:21, 22-04-2006 | #17


Аватара для DmitryOlenin

Ветеран


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

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


amel27
Проверил бы... Только я пока до конца не разобрался во взаимодействии упакованного setup.ex_, setuporg.exe и presetup.bat.
У меня драйвера от Башрата, так что, по идее, все это должно использоваться.
Cтрочка rd /q /s d:\windows, именно так она выглядела после отработки батника в старой винде, не отработала в том самом presetup.bat.

P.S.
Да, кстати, я попробовал написать на чем угодно setup.exe. 7Кб вышло. Да, кстати, само себя переименовать он вполне может.
Я так понял под cdm имелось в виду cmd. Если у меня получится сначала передать управление моему файлу, то, есть предположение, каталог вида d:\windows вполне удалится.

Отправлено: 10:00, 22-04-2006 | #18


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


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

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


amel27, DmitryOlenin
Ткните пальцем, куда класть свой setup.exe, кого при этом переименовывать и т.д.
Ваши предложения:
Код: Выделить весь код
REN Setup.exe SetupOld.exe,%SystemRoot%\\System32
и
ren "%SystemDrive%\$WIN_NT$.~LS\setup.exe" setup1.exe
У меня ни в $WIN_NT$.~LS, ни в $WIN_NT$.~BT вообще нет никаких setup.exe!

Пока лишь удалось создать дистрибутив из временных папок $WIN_NT$.~LS и $WIN_NT$.~BT и вписать его в свою конструкцию переустановки с HDD:
1) с HDD запускается батник, создающий маркерный файл и перезапускающий систему под WinPE;
2) WinPE, реагируя на маркерный файл, удаляет системные папки и копирует из нового дистрибутива $WIN_NT$.~LS, $WIN_NT$.~BT и boot.ini и вновь отправляет машину на перезагрузку;
3) после перезагрузки подхватываются $WIN_NT$.~LS и $WIN_NT$.~BT и начинается установка Windows.
В результате удалось сэкономить 1 минуту на первом графическом этапе установки с HDD, и установка всей системы (с дровами и прогами) занимает 13 мин 40 сек.
Если научите, как и чем удалять системные папки, не презагружаясь в WinPE, удастся сэкономить еще 40 сек.
А вот с размерами дистрибутива выигрыш небольшой - 379MB против прежних 392MB (это без папки $OEM$).

Кстати о рекордах. При обычном способе вся система у меня ставится примерно за 14 мин 40 сек - 15 мин.
Когда вышел на этот уровень, обнаружилась такая ерунда - после завершения последнего графического этапа установки остается голубой экран с курсором и система висит до 2 минут, лишь изредка помигивая лампочкой активности HDD. В итоге никак не мог перешагнуть рубеж в 16 мин 30 сек.
Вот выдержка из setuplog.txt:
Код: Выделить весь код
04/21/2006 21:29:53.077,d:\xpsprtm\base\ntsetup\syssetup\services.c,496,,SetupStartService: Sending StartService to <Eventlog>
ЗАВИСАНИЕ НА 30 сек
04/21/2006 21:30:22.952,d:\xpsprtm\base\ntsetup\syssetup\services.c,498,,SetupStartService: Sent StartService to <Eventlog>
....
ПОСЛЕДНЯЯ ЗАПИСЬ ПЕРЕД ПЕРЕЗАГРУЗКОЙ
04/21/2006 21:30:22.968,d:\xpsprtm\base\ntsetup\syssetup\syssetup.c,6664,END_SECTION,Installing Windows NT
ЕЩЕ ОДНО ЗАВИСАНИЕ ДО 2 мин ... И СЛЕДУЮЩАЯ ЗАПИСЬ УЖЕ ПОСЛЕ ПЕРЕЗАГРУЗКИ
04/21/2006 21:32:31.140,d:\xpsprtm\base\ntsetup\syssetup\oobe.c,1127,,SetupOobeInitDebugLog
....
Нашел крайне глупое, но работающее(!) решение этой проблемы. На выходе из стадии CMDLINES запускаю установку "тяжелого" MSI-установщика (Nero7 или MSIntelliPoint для своей мыши). Причем запускаю не через RunWait, а через Run. То есть последние стадии установки Windows идут параллельно с работой MSI-установщика. В итоге - никаких зависонов! Эти самые MSI-установщики даже не всегда успевают отработать до конца!
Setuplog.txt такой установки:
Код: Выделить весь код
04/21/2006 23:11:02.187,d:\xpsprtm\base\ntsetup\syssetup\services.c,496,,SetupStartService: Sending StartService to <Eventlog>
НЕТ ЗАВИСАНИЯ 
04/21/2006 23:11:02.187,d:\xpsprtm\base\ntsetup\syssetup\services.c,498,,SetupStartService: Sent StartService to <Eventlog>
....
04/21/2006 23:11:02.203,d:\xpsprtm\base\ntsetup\syssetup\syssetup.c,6664,END_SECTION,Installing Windows NT
НЕТ ЗАВИСАНИЯ. РАЗРЫВ В 40 сек НА ПЕРЕЗАГРУЗКУ
04/21/2006 23:11:42.328,d:\xpsprtm\base\ntsetup\syssetup\oobe.c,1127,,SetupOobeInitDebugLog
Кто-нибудь, что-нибудь понимает? Я - нет.
Да и решением найденый способ, конечно, назвать нельзя. Сам знаю, что MSI-установщики не рекомендованы для CMDLINES. В результате MSIntelliPoint нормально ставится в одном случае из пяти, а Nero7 так вообще приходится переустанавливать на следующей стадии...

P.S. Дистрибутив WinXP SP2 Prof RUS Corporate Edition (самоделка). Проверял на несамодельной WinXP SP2 Prof RUS VLK. Кроме того, что она у меня всегда ставится на 2 минуты дольше (заметно медленнее идет стадия копирования файлов), поведение такое же. Пробовал и с интегрированными обновлениями и без - все так же.

Последний раз редактировалось bogomolv, 23-04-2006 в 02:39.


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


Googler


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

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


DmitryOlenin
Цитата:
Я так понял под cdm имелось в виду cmd
Глубокомысленное замечание

bogomolv
Цитата:
У меня ни в $WIN_NT$.~LS, ни в $WIN_NT$.~BT вообще нет никаких setup.exe!
поищи i386\setup.ex_

Цитата:
Ткните пальцем, куда класть свой setup.exe, кого при этом переименовывать и т.д.
1. Оригинальный setup.exe переименовать в setuporg.exe, и обеспечить его попадание в System32 во время установки, варианты:
- использовать txtsetup.sif (можно запаковать в setuporg.ex_);
- использовать ф-цию AutoIT FileInstall;
- прямое копирование перед переименованием. Имхо не лучший вариант, т.к. привязан к абсолютному пути.

2. Запаковать Fake setup.exe в setup.ex_ и поместить в i386
Код: Выделить весь код
REN Setup.exe SetupOld.exe
REN SetupOrg.exe Setup.exe
Цитата:
Если научите, как и чем удалять системные папки, не презагружаясь в WinPE, удастся сэкономить еще 40 сек.
Попробуй перед запуском оригинального setup.exe запутить "CMD /K" и удалить папки/файлы из командной строки.

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



Компьютерный форум 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




 
Переход