Имя пользователя:
Пароль:
 

Показать сообщение отдельно

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-файла базу всех ПК можно автоматически заполнить имя машины, лицензионный ключ и т.д. Сам не пробЫвал - нужды пока не было.

Обсуждение вынесено в отдельную тему

Последний раз редактировалось Vadikan, 19-04-2006 в 07:31.

Это сообщение посчитали полезным следующие участники:

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