Войти

Показать полную графическую версию : Тихое развертывание ПО - из консоли - с файлового сервера


Zorge.R
12-12-2011, 11:47
Периодически возникает необходимость развернуть набор ПО на одном или ряде ПК, это можно сделать различными способами, в разных ситуациях администраторы используют тот или иной, удобный им в данном конкретном случае.

Хочу поделиться одним из способов, который я периодически применяю (есть много других способов, это один из них. он не заменяет SCCM, etc, он дает альтернативу).

Резюме: Это самописный скрипт, который после запуска выполняет поочередно скрипты (тихой установки) в определенной директории и выводит информацию в графическом виде, вот так:
http://s49.radikal.ru/i123/1112/ac/d55539ec73da.png
После установки последнего приложения, включается таймаут на 120 секунд и консоль закрывается.
Есть идеи по оптимизации кода и улучшениях алгоритма работы, например добавление уведомлений и ведении логов, но пока немного не до этого, я думаю что решение конкретной задачи, должно быть быстрым и эффективным, а сюси пуси можно оставить на потом.

Но, ближе к сути.

Весь набор, состоит из:
\install_all.bat - тело основного скрипта, запуск которого инициирует установку всего ПО и выводит процесс в консоль.
\uac_off.bat - скрипт, отключающий UAC. Пока не используется, создан на перспективу обновления install_all.bat
\uac.off.reg - ключ реестра, отключающий UAC. Инъекцию ключа выполняет uac_off.bat
\distr.cmd - каталог со скриптами установки.
\distr.cmd\*[1.bat-14.bat в текущем примере] - скрипты установки.

------
code:
------

install_all.bat:

@echo off

REM GLOBAL

set top=╔════════════════════════════════╦════════╦═╗
set stat_uns=║ ║ ║
set stat_50p=║▒▒▒▒ ║ ║
set stat_sec=║▓▓▓▓▓▓▓▓║√║
set mid=╠════════════════════════════════╬════════╬═╣
set end=╚════════════════════════════════╩════════╩═╝
set appname=║► "
set num=0
set app_1=║► Link and stuff
set app_2=║► MS Office 2010
set app_3=║► Adobe Acrobat Reader 10
set app_4=║► ABBY FineReader 10
set app_5=║► Adobe Flash 10
set app_6=║► Java 7 JRE
set app_7=║► FREE Commander
set app_8=║► VideoLAN
set app_9=║► WinRAR 4.01
set app_10=║► KAV WKS 6.04
set app_11=║► KAV Agent 8.04
set app_12=║► DotNet Framework 1.0-4.0
set app_13=║► 1C Enterprise v8.1
set app_14=║► Consultant Plus
set append=║► "
set endnum=14

REM DROP
for /L %%i IN (1,1,%endnum%) DO (
set app_%%i_stat=%stat_uns%
)

REM WORK
for /L %%i IN (1,1,%endnum%) DO (
set app_%%i_stat=%stat_50p%
call :render
call "\\sr-datastore-323\_distr\!install_dir\distr.cmd\%%i.bat"
set app_%%i_stat=%stat_sec%
)

TIMEOUT /T 120
@echo on
exit

:render
cls
echo.
echo %top%
echo %app_1%%app_1_stat%&echo %mid%
echo %app_2%%app_2_stat%&echo %mid%
echo %app_3%%app_3_stat%&echo %mid%
echo %app_4%%app_4_stat%&echo %mid%
echo %app_5%%app_5_stat%&echo %mid%
echo %app_6%%app_6_stat%&echo %mid%
echo %app_7%%app_7_stat%&echo %mid%
echo %app_8%%app_8_stat%&echo %mid%
echo %app_9%%app_9_stat%&echo %mid%
echo %app_10%%app_10_stat%&echo %mid%
echo %app_11%%app_11_stat%&echo %mid%
echo %app_12%%app_12_stat%&echo %mid%
echo %app_13%%app_13_stat%&echo %mid%
echo %app_14%%app_14_stat%
echo %end%



REM GLOBAL - глобальные переменные.
Имена пакетов установки, пока вбиты жестко, в дальнейшем можно сделать перехват имен как параметров.
appname и append нужны тут только для видимости ширины поля и не используются.
блок :render рисует таблицу, по имеющимся параметрам.
REM DROP - сброс статуса всех пакетов в значение stat_uns
REM WORK - делает call \\path\%%i.bat с 1, до endnum, с шагом 1. ставим выполняемому пакету статус 50%, рисуем таблицу, вызываем скрипт, ставим статус 100%, и так далее, пока %%i меньше либо равно endnum
Можно будет провести оптимизацию и делать обход подкаталога захватывая имена пакетов как переменные и не указывая endnum.

install_all.bat отделен от скриптов установки, для удобства чтения кода и работы с ним.
В примере выше, путь \\sr-datastore-323\_distr\ это шаренный каталог на сервере sr-datastore-323. т.е. все файлы, как установки, так и скрипты хранятся на файловом сервере.
\\sr-datastore-323\_distr\!install_dir\ корневой каталог установщика
\\sr-datastore-323\_distr\!install_dir\distr.cmd\ каталог со скриптами тихой установки от 1.bat о 14.bat в текущем примере, номер соответствует "set app_%="
В вашем случае, пути будут другие. Во всех примерах ниже, будет указан сетевой путь до файлов лежащих на этом файловом сервере.
-----------------

\uac_off.bat - скрипт выполняющий инъекцию в реестр
@echo off

cls
echo ╔═══════════╗
echo ║ UAC off ║
echo ╚═══════════╝

regedit /s \\sr-datastore-323\_distr\_corp\_lnk\uac.off.reg

echo DONE!
echo Will restart at:
TIMEOUT /T 5
shutdown /r

@echo on
а это сам ключ реестра, путь на который указан выше \uac.off.reg:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"EnableLUA"=dword:00000000

---------------

Каталог distr.cmd:

Всё ПО ставится в тихом режиме, никаких действий выполнять не требуется, установка проходит все пункты поочередно и отображает процесс в консоли.

► Link and stuff - выполняем всякие полезные штуки, создаем ярлыки и т.д., кому что надо:

if exist "C:\Users\Public\Desktop\desktop.ini" (
echo sys.Win7
copy "\\sr-datastore-323\_adm\_distr\_corp\_lnk\Корп. почта - Web.url" "C:\Users\Public\Desktop\Корп. почта - Web.url"
copy "\\sr-datastore-323\_adm\_distr\_corp\_lnk\КСД - Комплексная Система Документооборота.url" "C:\Users\Public\Desktop\КСД - Комплексная Система Документооборота.url"
) else (
echo sys.WinXP
copy "\\sr-datastore-323\_adm\_distr\_corp\_lnk\Корп. почта - Web.url" "C:\Documents and Settings\All Users\Рабочий стол\Корп. почта - Web.url"
copy "\\sr-datastore-323\_adm\_distr\_corp\_lnk\КСД - Комплексная Система Документооборота.url" "C:\Documents and Settings\All Users\Рабочий стол\КСД - Комплексная Система Документооборота.url"
)


► MS Office 2010 - установка пакета Office собранного "центром развертывания Office":
"\\sr-datastore-323\_adm\_distr\_corp\office 2010\setup.exe"

► Adobe Acrobat Reader 10:
"\\sr-datastore-323\_adm\_distr\_corp\AdobeAcrobat Reader\AdbeRdr1000_ru_RU.exe" /msi EULA_ACCEPT=YES /qn

► ABBY FineReader 10:
"\\sr-datastore-323\_adm\_distr\_corp\FineReader\Setup.exe" /qn

► Adobe Flash 10 - установка обеих версий Flash:

"\\sr-datastore-323\_adm\_distr\_corp\Adobe Flash\install_flash_player.exe" -install
"\\sr-datastore-323\_adm\_distr\_corp\Adobe Flash\install_flash_player_ax.exe" -install

► Java 7 JRE:
"\\sr-datastore-323\_adm\_distr\_corp\Java\Java 7\jre-7-windows-i586.exe" /s /NoRestart

► FREE Commander:
"\\sr-datastore-323\_adm\_distr\_corp\Free Commander\fc_setup.exe" /SP- /VERYSILENT /LANG=Russian /NORESTART

► VideoLAN - происходит простая проверка, установлен ли VLC, если да, произойдет деинсталяция чтобы процесс тихой установки не выдал "ошибку":
if exist "%ProgramFiles%\VideoLAN\VLC\uninstall.exe" (
"%ProgramFiles%\VideoLAN\VLC\uninstall.exe" /S
TIMEOUT /T 10
)
"\\sr-datastore-323\_adm\_distr\_corp\vlc\vlc-1.1.9-win32.exe" /L=1049 /S

► WinRAR 4.01 - Установка WinRAR и "активация" его ключа:

"\\sr-datastore-323\_adm\_distr\_corp\WinRAR_4.01_corp\wrar401ru.exe" /s
if exist "%programfiles%\WinRar" (
xcopy "\\sr-datastore-323\_adm\_distr\_corp\WinRAR_4.01_corp\rarreg.key" "%programfiles%\WinRar" /Y
) else (
xcopy "\\sr-datastore-323\_adm\_distr\_corp\WinRAR_4.01_corp\rarreg.key" "%programfiles(x86)%\WinRar" /Y
)


► KAV WKS 6.04:
"\\sr-datastore-323\KLSHARE\Packages\KavWks 6.0.4.1424\exec\setup.exe" /s

► KAV Agent 8.04:
"\\sr-datastore-323\KLSHARE\Packages\NetAgent 8.0.2134\exec\setup.exe" /s

► DotNet Framework 1.0-4.0 - установка вот этой прекрасной сборки .net (http://forum.oszone.net/thread-46682.html):
"\\sr-datastore-323\_adm\_distr\_corp\Net_ Framework\Package\DotNet_1.0-4.0.exe" /S

► 1C Enterprise v8.1 - установка 1С, замена nethasp.ini и копирование ярлыков на уже сформированные базы:

"\\sr-datastore-323\1C81Admin\setup.exe" /s /v/qn
del "%programfiles%\1cv81\bin\conf\nethasp.ini"
copy "\\sr-datastore-323\_adm\_distr\_corp\_nethasp\nethasp.ini" "%programfiles%\1cv81\bin\conf\nethasp.ini"
if exist "C:\Users\Public\Desktop\desktop.ini" (
echo sys.Win7
copy "\\sr-datastore-323\_adm\_distr\_corp\_nethasp\1С Основная база - v8.1.lnk" "C:\Users\Public\Desktop\1С Основная база - v8.1.lnk"
copy "\\sr-datastore-323\_adm\_distr\_corp\_nethasp\1С Тестовая база - v8.1.lnk" "C:\Users\Public\Desktop\1С Тестовая база - v8.1.lnk"
) else (
echo sys.WinXP
copy "\\sr-datastore-323\_adm\_distr\_corp\_nethasp\1С Основная база - v8.1.lnk" "C:\Documents and Settings\All Users\Рабочий стол\1С Основная база - v8.1.lnk"
copy "\\sr-datastore-323\_adm\_distr\_corp\_nethasp\1С Тестовая база - v8.1.lnk" "C:\Documents and Settings\All Users\Рабочий стол\1С Тестовая база - v8.1.lnk"
)

вот пример ярлыка для базы "base" на сервере "sr-1c-125"

"C:\Program Files (x86)\1cv81\bin\1cv8.exe" enterprise /Ssr-1c-125\base

► Consultant Plus - запуск стандартного "установщика" консультанта, вопрос с тихой установкой пока толком не решен, поэтому этот пункт последний в списке, есть идеи по реализации тихой установки окольными путями:
"\\sr-kncges-323\ConsultantPlus\cons.exe"
---------------------

Есть что изменить в install_all.bat, есть куда улучшать, вижу вектора движения, пока нет особого желания и необходимости.
Приму любые идеи, критику и предложения.

tutitam
15-11-2012, 17:00
Сразу говорю не селен в написании скриптов )) По этой причине и спрашиваю.

Вопрос возник по данному батнику.

Сделал следующие файлы.

\install_all.bat

\distr.cmd - каталог со скриптами установки.

В данный файл писать пути к скриптам типа 1.bat, 2.bat, 3bat, и т.д? Или сами пути с ключами тихой установки?

\distr.cmd\*[1.bat-14.bat в текущем примере] - скрипты установки.
Файл 1.bat должен содержать путь к установочному файлу типа - "\\server\Soft\wrar401.exe" /S /IR
??

На данный момент у меня в файле distr.cmd - прописаны пути до bat файлов.

До этого в distr.cmd были прописаны пути ключами тихой установки. Все конено работает но криво и без построения графика.

Если прописать call "\\server\soft\hiden_install\distr.cmd\" - работает , но криво.
Если оставить call "\\server\soft\hiden_install\distr.cmd\%%i.bat" - отдает "неверно задано имя папки" запускается отсчет в 120 сек.

Как быть то ?

Iska
15-11-2012, 17:26
tutitam, по поводу пакетного файла лучше пишите непосредственно автору.

tutitam
15-11-2012, 17:59
Отправил, но судя по активности автора на форуме, что то мне подсказывает, что ответа возможно придется ждать долго :)

Iska
15-11-2012, 23:20
tutitam, написали именно на почту?

tutitam
16-11-2012, 12:02
Iska, И на поту в том числе.

tutitam
16-11-2012, 18:23
C выше описанной проблемой разобрался, все дело в том, что не внимательно читал пост автора.

Но все же остается вопрос - почему то не отрисовывается график, выдает кракозябру.

tutitam
20-11-2012, 15:08
Проблема решена.
Для того чтобы корректно отрисовывалась таблица, скрипт нужно сохранять в кодировке ОЕМ 866.

Спасибо Zorge.R., помог разобраться.




© OSzone.net 2001-2012