Что нового

Автоутсановка программ в AD с помощью AUTOIT на прмере ДОКУМЕНТЫ ПУ5

panda1945

Новичок
Сообщения
4
Репутация
1
Доброе время суток :smile: ну поехали.
Для начала ссылка на все фалы о которых тут говорится: http://files.mail.ru/KR1XJS
Готовый установщик+ все файлы которые в него включнены.

Дано: программа Документы ПУ5 тип -установщика EXEшник
Задача поставить большому числу пользователей. + бонус .есть домен.

Итак разобьем задачу:

1.Создание автоустановщика.
2.выбор средства распространения автоустановщика



1.В качестве автоустановщика был выбран скрипт autoit ( почему я не msi отдельная песня)
2.В качестве средства распространения утилита psexec.exe( спасибо господину Русиновичу)



1. Создаем автоустановщик на пример ДОКУМЕНТЫ ПУ5

Код:
run("setup_ipfrx5_6_20_75.exe")
WinWaitActive("Установка 'Документы ПУ 5'")
Send("{ENTER}")
WinWaitActive("Установка 'Документы ПУ 5'" ,"Лицензионное соглашение" )
send("{TAB 4}{ENTER 3}")
WinWaitActive("Установка 'Документы ПУ 5'","Опции")
Send("{RIGHT}{SPACE}{ENTER}")
WinWaitActive("Установка 'Документы ПУ 5'" , "Программа 'Документы ПУ 5' была успешно установлена!")
Send("{enter}")


FileCopy(@ScriptDir & "\ikladr_5.tps", "C:\Program Files\Документы ПУ 5\DataBase\",1)

FileCreateShortcut(@ProgramFilesDir  & "\Документы ПУ 5\ipfrx5.exe",@ProgramFilesDir & "\Документы ПУ 5\Документы_ПУ_5.lnk", @ProgramFilesDir & "\Документы ПУ 5", "","" )
$var = "C:\Documents and Settings\All Users"
     if FileExists($var & "\"& "Рабочий стол") Then
     FileCopy(@ProgramFilesDir & "\Документы ПУ 5\Документы_ПУ_5.lnk", $var & "\"& "Рабочий стол" & "\Документы_ПУ_5.lnk")
     else
     FileCopy(@ProgramFilesDir & "\Документы ПУ 5\Документы_ПУ_5.lnk", $var & "\"& "Desktop" & "\Документы_ПУ_5.lnk")
 EndIf
 
 
shutdown(2)


2. итого у нас есть два файла дистрибутив ПУ5 и скомпилированный установщик.
3. Теперь создаем SFX архив( подробности тут http://www.oszone.net/display.php?id=3171) в опциях упаковки ставим «распаковывать во временною папку» , после распаковки запустить скомпилированный установщик


Комментарии к скрипту

Код:
$var = "C:\Documents and Settings\All Users"

Почему ALL Users? Потому что ставим от имени админа и ярлык окажется у него на десктопе.
Да. моим юзерам не дано вынести ярлык из пуск > все программы )))


Код:
if FileExists($var & "\"& "Рабочий стол") Then
     FileCopy(@ProgramFilesDir & "\Документы ПУ 5\Документы_ПУ_5.lnk", $var & "\"& "Рабочий стол" & "\Документы_ПУ_5.lnk")
     else
     FileCopy(@ProgramFilesDir & "\Документы ПУ 5\Документы_ПУ_5.lnk", $var & "\"& " Desktop " & "\Документы_ПУ_5.lnk")
 EndIf


Винды есть как RUS так и ENG реализовал проверку таким грубым методом. Сроки горели)) Если кто знает по красивее - поправите.



Теперь о методе распространения



Для этой цели использую PSEXEC.EXE

Принцип работы утилита копирует наш SFX установщик на удаленный компьютер и запускает его там с правами админа))


Код:
psexec -i -c -d  -f  C:\install\install_pu5.exe  @D:\PSEXEC_INSTAll\list.txt
Расшифруем( ссылка н а подробно описание синтаксиса в конце)
Скопировать наш SFX установщик на все ПК указанные в list.txt и выполнить его.

ВАЖНО!!!
ЧТО БЫ AUTOIT – установщик сработал при запуске по psexec
ОН ДОЛЖЕН
1. Быть запущен в графическом режиме ( ключ –i ) мы же эмулируем нажатие клавиш в окне так? =)))
2. Он должен быть скопирован в локальную систему перед запуском( ключ -c )
Те так НЕЛЬЗЯ
Код:
psexec -i  -d    @D:\PSEXEC_INSTAll\list.txt  \\server\.скомпилированный установщик .exe
Будете посланы
Почему так в поясню ниже.


По основным пунктам все.



Превратности запуска через PSEXEC

PSEXEC не умеет запускать на удаленном хосте файлы лежащие на шаре.!
Exeшник Должен быть на хосте локально!

У нас к тому же два файла EXE( дистрибутив и скомпилированный скрпит). Т.е. надо одной командой psexec скопировать на хост два файла а один из них запустить… найдете такую напишите.
Впрочем если и найдете, это вам не поможет(ехидный смайл)

Рассмотрим ситуацию:

дистрибутив и скомпилированный скрпит лежат на хосте в папке C:\install {( ну положим скопированные туда по GPO этакой репозитарий =)))) }

Мы пытаемся запустить:
Код:
psexec \\ХОСТ  -i -d C:\INSTALL\ скомпилированный  скрпит.exe
Вроде бы все правильно? Но запуск не произойдет! Почему ХЗ. Так и не понял.
Увы не считая упаковки в SFC , мной был найден только такой путь:




ЧТО БЫ ЗАПУСТИЛСЯ СКРПТ ЧЕРЕЗ psexec

НУЖНО ЧТО БЫ ОН БЫЛ ВЫЗВАН ИЗ САМОГО ХОСТА.

На рисунке видно что psexec вызывает CMDшник на хосте( С ПРАВАМИ АДМИНА!!!)
Который в свою очередь вызывает установщик и тп.

Это кстати моя первая версия автоустановщика))) о SFX я узнал через два дня.


Вот так это с SFX
1.Psexec копирует SFX на клиента запускает его и докладывает ID процесса мне.
SFX распаковывает в TEMPовую директорию дистрибутив и скомпилированный скрпит и запускает скомпилированный скрпит( это все уже на хосте)



Вот и все. пора за пивом :beer: :smile:
Если тема встрет интерес расскажу еще о программах CheckXML и Баланс 2W. в аналогичном ключе.
Все счастливо.)

ССЫЛКИ ПО ТЕМЕ


PSEXEC
http://technet.microsoft.com/ru-ru/sysinternals/bb897553


Создание SFX архива
http://www.oszone.net/display.php?id=3171
 
Верх