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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Тихое развертывание ПО - из консоли - с файлового сервера

Ответить
Настройки темы
CMD/BAT - Тихое развертывание ПО - из консоли - с файлового сервера

Новый участник


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

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


Изображения
Тип файла: png Безымянный.png
(79.9 Kb, 17 просмотров)
Периодически возникает необходимость развернуть набор ПО на одном или ряде ПК, это можно сделать различными способами, в разных ситуациях администраторы используют тот или иной, удобный им в данном конкретном случае.

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

Резюме: Это самописный скрипт, который после запуска выполняет поочередно скрипты (тихой установки) в определенной директории и выводит информацию в графическом виде, вот так:

После установки последнего приложения, включается таймаут на 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:
Код: Выделить весь код
"\\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, есть куда улучшать, вижу вектора движения, пока нет особого желания и необходимости.
Приму любые идеи, критику и предложения.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:47, 12-12-2011

 

Новый участник


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

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


Сразу говорю не селен в написании скриптов )) По этой причине и спрашиваю.

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

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

Код: Выделить весь код
\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 сек.

Как быть то ?

Отправлено: 17:00, 15-11-2012 | #2



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

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


Ветеран


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

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


tutitam, по поводу пакетного файла лучше пишите непосредственно автору.

Отправлено: 17:26, 15-11-2012 | #3


Новый участник


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

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


Отправил, но судя по активности автора на форуме, что то мне подсказывает, что ответа возможно придется ждать долго

Отправлено: 17:59, 15-11-2012 | #4


Ветеран


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

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


tutitam, написали именно на почту?

Отправлено: 23:20, 15-11-2012 | #5


Новый участник


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

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


Iska, И на поту в том числе.

Отправлено: 12:02, 16-11-2012 | #6


Новый участник


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

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


C выше описанной проблемой разобрался, все дело в том, что не внимательно читал пост автора.

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

Отправлено: 18:23, 16-11-2012 | #7


Новый участник


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

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


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

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

Отправлено: 15:08, 20-11-2012 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Тихое развертывание ПО - из консоли - с файлового сервера

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Диспечер ресурсов файлового сервера. Denzl Microsoft Windows NT/2000/2003 3 10-12-2010 20:06
Зависание файлового сервера... exo Microsoft Windows NT/2000/2003 5 25-09-2009 20:57
Падение файлового сервера, DNS-сервера раз в 24 часа. Yazago Microsoft Windows NT/2000/2003 42 01-09-2009 11:52
Организация файлового сервера max_k Microsoft Windows NT/2000/2003 4 22-02-2007 11:49
[решено] Перенос файлового сервера bobrush Microsoft Windows NT/2000/2003 19 23-06-2006 09:44




 
Переход