TechnicsKuzya
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Скрипт подходит, как для русскоязычной системы, так и для англоязычной (корректно определяет версию и язык операционной системы заданные в OS_ver.txt, даже при наличии MUI, при несоответствии выводится соответствующее сообщение, язык вывода информационных сообщений (англ. или рус.) зависит от выбранной кодовой страницы в системе). Скрипт также рассчитан на установку .Net Framework 3.5 SP1 с последними обновлениями, удаление ярлыков IE с рабочего стола и панели быстрого запуска, установку библиотек VC++, если данные функции не нужны, их можно пропустить удалив или не создавая папки dotnetfx35, IE и VC++ (скрипт проверяет их наличие, в случае отсутствия пропускает их установку и переходит к следующей выполняемой строке) Архив с готовым скриптом, файлами конфигурации, необходимыми утилитами и файлами реестра тут... Ссылка на сборник официальных обновлений для русскоязычной и англоязычной Windows XP SP3 (версия от 09.09.2009) с возможностью выбора скачиваемых обновлений, их языка, а также инструментами для удобной синхронизации файлов с текущей версией сборника, теперь нет необходимости перекачивать одно и тоже каждый месяц: Torrent-link (регистрация не требуется) Пример текста основного скрипта (сохранить можно, например, как Setup.cmd)... Код: @echo off rem Ссылки на пример скрипта и готового сборника для Windows XP SP3 / Windows Server 2003 SP2: rem ---------------------------------------------------------------------------------------------------- rem http://technicskuzya.narod.ru rem ---------------------------------------------------------------------------------------------------- rem Полная версия сборника одним файлом для Windows XP SP3 (Русский): rem http://hotfile.com/dl/10310400/e9a48d7/PostSP3_Ru_XP_12_08_2009.exe.html rem Полная версия сборника одним файлом для Windows XP SP3 (Английский): rem http://hotfile.com/dl/10312766/281b3e9/PostSP3_En_XP_(12_08_2009).exe.html rem ---------------------------------------------------------------------------------------------------- rem Полная версия сборника одним файлом для Windows Server 2003 SP2 (Русский) от 10.06.09: rem http://letitbit.net/download/568c61625b46a5c/PostSP2_Ru_SRV__10_06_2009_.exe.html rem http://hotfile.com/dl/7037664/c892b6c/PostSP2_Ru_SRV__10_06_2009_.exe.html rem Полная версия сборника одним файлом для Windows Server 2003 SP2 (Английский) от 10.06.09: rem http://letitbit.net/download/054bf50167f5455/PostSP2_En_SRV__10_06_2009_.exe.html rem http://hotfile.com/dl/7046210/3bb0189/PostSP2_En_SRV__10_06_2009_.exe.html rem ---------------------------------------------------------------------------------------------------- SetLocal EnableExtensions SetLocal EnableDelayedExpansion rem ---Считываем файлы конфигурации Set.txt, OS_ver.txt, Text_ru.txt(Text_en.txt) из папки Config--- for /F "tokens=*" %%s in (.\Config\Set.txt) do set %%s for /F "tokens=*" %%s in (.\Config\OS_ver.txt) do set %%s (if "%Chk_Lang%"=="Russian" set Chk_Lang3=%Chk_Lang1%)&(if "%Chk_Lang%"=="English" set Chk_Lang3=%Chk_Lang2%) for /f "tokens=3" %%c in ('reg query "%detect_CP%" /v OEMCP^|findstr /I /C:"OEMCP"') do if "%%c"=="866" (set text_lang=Text_ru.txt) else (set text_lang=Text_en.txt) for /F "tokens=*" %%s in (.\Config\%text_lang%) do set %%s rem ---Задаем заголовок окна CMD--- Title %Title_Cmd% rem ---Скрываем окно CMD по заголовку--- start /WAIT /MIN .\Tools\nircmd.exe win hide title "%Title_Cmd%" %delay% rem ---Вызываем процедуру проверки соответствия версии и языка операционной системы--- call :chk rem ---Выводим информационное сообщение о начале установки обновлений поверх всех окон со звуковым оповещением--- start .\Tools\nircmd.exe infobox %Text_InfoBox_2% %Title_InfoBox% start /WAIT /MIN .\Tools\nircmd.exe beep 1500 2000 start /WAIT /MIN .\Tools\nircmd.exe win settopmost title %Title_InfoBox% 1 rem ---Делаем запись даты и времени выполнения скрипта в журналы Installed_Updates.log и Detected_Updates.log--- echo Date of installation: %time:~,-6% %date%>>%SystemDrive%\Installed_Updates.log&echo Date of detection: %time:~,-6% %date%>>%SystemDrive%\Detected_Updates.log echo.>>%SystemDrive%\Installed_Updates.log&echo.>>%SystemDrive%\Detected_Updates.log rem ---Включаем отображение расширений файлов в проводнике (только если существует файл HideFileExt.reg в папке Tools)--- if exist .\Tools\HideFileExt.reg start /high /wait regedit /s .\Tools\HideFileExt.reg rem ---Отключаем службу восстановления системы (только если существует файл DisableSR.reg в папке Tools)--- if exist .\Tools\DisableSR.reg ( start /high /wait regedit /s .\Tools\DisableSR.reg start /high /wait sc stop srservice >nul ) rem ---Вызываем процедуру установки Microsoft .Net Framework 3.5 SP1 Rus--- call :dotnetfx rem ---Для каждой не пустой строки файла KB.txt из папки Config вызываем процедуру :KBInst--- for /F "tokens=1,* delims= " %%k in (.\Config\KB.txt) do call :KBInst "%%k" "%%l" rem ---Если установлено обновление KB890830 создаем ярлык (меню Пуск->Программы) для исполняемого файла в папке заданной в файле Text_ru.txt (Text_en.txt)--- if exist "%WINDIR%\System32\MRT.exe" .\Tools\nircmd shortcut "%WINDIR%\System32\MRT.exe" "~$folder.common_programs$\%MRT_Group%" "Microsoft Removal Tool" rem ---Вызываем процедуру удаления ярлыков Internet Explorer с рабочего стола и панели быстрого запуска--- call :IEclrlnk rem ---Вызываем процедуру установки Windows Roots Update--- call :rootsupdate rem ---Вызываем процедуру установки библиотек VC++ 2005 и VC++ 2008--- call :VC++ if exist .\KBxxxxxx\KB905474.exe if exist .\WGA\WGAUpdate.exe start /wait .\WGA\WGAUpdate.exe rem ---Записываем по две пустые строки в журналы Installed_Updates.log и Detected_Updates.log--- echo.>>%SystemDrive%\Installed_Updates.log&echo.>>%SystemDrive%\Installed_Updates.log&echo.>>%SystemDrive%\Detected_Updates.log&echo.>>%SystemDrive%\Detected_Updates.log rem ---Распаковываем утилиту nircmd.exe в папку %SystemRoot%\TEMP--- start /WAIT /MIN .\Tools\NirCmdInst.exe rem ---После перезагрузки выводим информационное сообщение о полном окончании установки--- reg add HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce /v ReadyPreSP3 /t REG_SZ /d "%SystemRoot%\TEMP\nircmd.exe infobox \"%Text_InfoBox_4%\" \%Title_InfoBox:~,-1%\"" /f >nul rem ---Проверяем значение ключа принудительной перезагрузки после окончания установки обновлений--- if %ForceReboot%==Yes ( rem ---Выводим информационное сообщение об окончании установки обновлений и предстоящей перезагрузке со звуковым оповещением--- start /WAIT /MIN .\Tools\nircmd.exe win close title %Title_InfoBox% start .\Tools\nircmd.exe infobox %Text_InfoBox_3% %Title_InfoBox% start /WAIT /MIN .\Tools\nircmd.exe beep 200 800 rem ---Выполняем перезагрузку после 10 секундной задержки--- start /B %SystemRoot%\TEMP\nircmd.exe cmdwait 10000 exitwin reboot forceifhung ) else (rem ---Выводим информационное сообщение об окончании установки обновлений и необходимости в перезагрузке --- start /WAIT /MIN .\Tools\nircmd.exe win close title %Title_InfoBox% start .\Tools\nircmd.exe infobox %Text_InfoBox_5% %Title_InfoBox% start /WAIT /MIN .\Tools\nircmd.exe beep 200 800 ) exit rem =============== rem ===ПРОЦЕДУРЫ=== rem =============== rem ---Процедура проверки соответствия версии и языка операционной системы--- :chk rem ---Проверяем версию операционной системы--- for /f "tokens=2*" %%v in ('reg query "%detect_SP%" /v ProductName^|findstr /I /C:"ProductName"') do ( if not "%%w"=="%Chk_OS%" ( start .\Tools\nircmd.exe infobox %Text_InfoBox_0% %Title_InfoBox% exit ) ) rem ---Проверяем версию Service Pack операционной системы--- for /f "tokens=5" %%p in ('reg query "%detect_SP%" /v CSDVersion') do ( if not "%%p"=="%Chk_SP:~-1%" ( start .\Tools\nircmd.exe infobox %Text_InfoBox_0% %Title_InfoBox% exit ) ) rem ---Проверяем язык операционной системы--- if not exist "%ALLUSERSPROFILE%\%Chk_Lang3%" ( start .\Tools\nircmd.exe infobox %Text_InfoBox_1% %Title_InfoBox% exit ) goto :EOF rem ---Процедура установки Microsoft .Net Framework 3.5 SP1 Rus с проверкой существования папки .\dotnetfx35 и сведений о данной версии в реестре--- :dotnetfx if exist .\dotnetfx35 ( reg query "%detect_NET%" 1>nul 2>&1 if !ERRORLEVEL!==1 ( %delay% xcopy .\dotnetfx35\dotnetfx35langpack_x86ru.exe %TEMP%\dotnetfx3530729.01\1033\dotnetfx35\x86\*.exe /Y >nul start /wait .\dotnetfx35\dotnetfx35.exe %NetSwitches% echo dotnetfx35 %NetSwitches%>>%SystemDrive%\Installed_Updates.log (%delay%)&(%NetStop%) for /f "tokens=3" %%k in ('reg query "%detect_KB954550%" /v Location') do set NetPath=%%~dk%%~pk rem rd /S /Q "!NetPath:~,-1!" attrib +h !NetPath:~,-1! %delay% ) ELSE (echo .NET Framework 3.5 SP1 Rus detected in %detect_NET%>>%SystemDrive%\Detected_Updates.log) reg query "%detect_NET%" 1>nul 2>&1 if !ERRORLEVEL!==0 ( reg query "%detect_KB958481%" 1>nul 2>&1 if !ERRORLEVEL!==1 ( start /wait .\dotnetfx35\ndp20sp2-kb958481-x86.exe %NetUpdatesSwitches% echo KB958481 %NetUpdatesSwitches%>>%SystemDrive%\Installed_Updates.log (%delay%)&(%NetStop%) ) ELSE (echo KB958481 detected in %detect_KB958481%>>%SystemDrive%\Detected_Updates.log) reg query "%detect_KB958483%" 1>nul 2>&1 if !ERRORLEVEL!==1 ( start /wait .\dotnetfx35\ndp30sp2-kb958483-x86.exe %NetUpdatesSwitches% echo KB958483 %NetUpdatesSwitches%>>%SystemDrive%\Installed_Updates.log (%delay%)&(%NetStop%) ) ELSE (echo KB958483 detected in %detect_KB958483%>>%SystemDrive%\Detected_Updates.log) reg query "%detect_KB958484%" 1>nul 2>&1 if !ERRORLEVEL!==1 ( start /wait .\dotnetfx35\ndp35sp1-kb958484-x86.exe %NetUpdatesSwitches% echo KB958484 %NetUpdatesSwitches%>>%SystemDrive%\Installed_Updates.log (%delay%)&(%NetStop%) ) ELSE (echo KB958484 detected in %detect_KB958484%>>%SystemDrive%\Detected_Updates.log) ) ) goto :EOF rem ---Процедура для установки обновлений из папки KBxxxxxx перечисленных в KB.txt--- :KBInst rem ---Имя текущего обновления из файла KB.txt (значение первого параметра переданного данной процедуре) присваиваем переменной number--- set number=%~1 rem ---По умолчанию считаем, что ключи для установки текущего обновления в файле KB.txt не определены--- set UserSwitches=No rem ---Если в файле KB.txt после имени обновления заданы ключи для установки обновления, присваиваем их переменной UserSwitches--- if not %2=="" set UserSwitches=%~2 rem ---По-умолчанию считаем, что ни одно обновление из папки KBxxxxxx не установлено--- set detect_key=0 rem ---Для "особенных" обновлений выполняем "особенную" проверку на предмет необходимости установки и прерываем выполнение процедуры в случае обнаружения сведений--- if %number%==KB923789 if not exist "%detect_KB923789%" (echo %number% new version of Macromedia Flash already installed>>%SystemDrive%\Detected_Updates.log)&(goto :EOF) if %number%==KB946648 if not exist "%detect_KB946648%" (echo %number% skipped %detect_KB946648% not exist>>%SystemDrive%\Installed_Updates.log)&(goto :EOF) if %number:~,3%==IE7 set detect_IE=%detect_IE7% if %number:~,3%==IE8 set detect_IE=%detect_IE8% if %number:~,3%==wua if exist "%detect_WUA%" (echo %number% detected in %detect_WUA%>>%SystemDrive%\Detected_Updates.log)&(goto :EOF) if %number%==KB961118 ( reg query "%detect_NET%" 1>nul 2>&1 if !ERRORLEVEL!==1 (echo %number% skipped MS .Net Framework 3.5 SP1 not detected>>%SystemDrive%\Installed_Updates.log)&(goto :EOF) ) if %number%==msxml4 ( reg query "%detect_msxml4%" 1>nul 2>&1 if !ERRORLEVEL!==0 (echo %number% detected in %detect_msxml4%>>%SystemDrive%\Detected_Updates.log)&(goto :EOF) ) if %number%==KB890830 if exist %windir%\system32\mrt.exe for /f "tokens=1" %%d in ('dir %windir%\system32\mrt.exe /T:W^|findstr /I /C:"mrt"') do ( if "%%d"=="%cur_date_mrt%" (echo %number% detected in %windir%\system32\mrt.exe - modified %%d>>%SystemDrive%\Detected_Updates.log)&(goto :EOF) ) if %number%==KB905474 if not exist ".\KBxxxxxx\KB905474.exe" goto :EOF rem ---Выполняем запрос сведений об обновлении во всех ветках реестра указанных в файле RegKeys.txt из папки Config и прерываем поиск при успешном запросе--- for /F "tokens=*" %%l in (.\Config\RegKeys.txt) do ( reg query "%%l" 1>nul 2>&1 if !ERRORLEVEL!==0 (set detect_key=1)&(echo !number! detected in %%l>>%SystemDrive%\Detected_Updates.log)&(goto chk_detect) ) :chk_detect rem ---Выполняем установку обновления если сведения в реестре не обнаружены--- if !detect_key!==0 ( rem ---Выполняем анализ наличия или отсутствия переопределения (в KB.txt) ключей установщика заданных по-умолчанию (в Set.txt)--- if !UserSwitches!==No ( if exist .\KBxxxxxx\%number%.exe (start /wait .\KBxxxxxx\%number%.exe %MainSwitches%) else ( if exist .\KBxxxxxx\%number%.msi (start /wait .\KBxxxxxx\%number%.msi !MainSwitches!) else ( echo %number% skipped file not found in KBxxxxxx>>%SystemDrive%\Installed_Updates.log)&(goto :EOF) ) echo %number% %MainSwitches%>>%SystemDrive%\Installed_Updates.log ) ELSE ( if exist .\KBxxxxxx\%number%.exe (start /wait .\KBxxxxxx\%number%.exe !UserSwitches!) else ( if exist .\KBxxxxxx\%number%.msi (start /wait .\KBxxxxxx\msiexec /i %number%.msi !UserSwitches!) else ( if exist .\KBxxxxxx\%number%.cmd (start /wait /min .\KBxxxxxx\%number%.cmd !UserSwitches!)&(goto :EOF) else ( echo %number% skipped file not found in KBxxxxxx>>%SystemDrive%\Installed_Updates.log)&(goto :EOF) ) ) echo %number% !UserSwitches!>>%SystemDrive%\Installed_Updates.log ) rem ---Выполняем задержку перед установкой следующего обновления--- %delay% goto :EOF ) goto :EOF rem ---Процедура удаления ярлыков Internet Explorer с рабочего стола и панели быстрого запуска с проверкой существования папки .\IE и сведений в реестре--- :IEclrlnk if exist .\IE if exist "%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Quick Launch\*Internet Explorer*.lnk" ( reg query "%detect_IE%" 1>nul 2>&1 if !ERRORLEVEL!==0 ( start /wait regedit /s .\IE\DDL_IE.reg start /wait /min .\Tools\nircmd.exe shellrefresh start /wait .\IE\IElnk.exe ) ) goto :EOF rem ---Процедура установки Windows Roots Update с проверкой соответствия текущей версии указанной в Set.txt--- :rootsupdate for /f "tokens=3 delims= " %%v in ('reg query "%detect_rootsupd%" /v Version') do set detect_ver_rootsupd=%%v if not "%detect_ver_rootsupd%"=="%cur_ver_rootsupd%" (.\Other\rootsupd.exe %OldSwitches%&echo Windows Roots Update %OldSwitches% - ver:"%cur_ver_rootsupd%">>%SystemDrive%\Installed_Updates.log ) ELSE echo Windows Roots Update detected in %detect_rootsupd%>>%SystemDrive%\Detected_Updates.log goto :EOF rem ---Процедура установки библиотек VC++ 2005 и VC++ 2008 с проверкой существования папки .\VC++ и веток реестра указанных в Set.txt :VC++ if exist .\VC++ ( reg query "%detect_VC05%" 1>nul 2>&1 if !ERRORLEVEL!==1 ( start /wait .\VC++\vcredist_x86_2005.exe %OldSwitches% echo VC++ 2005 %OldSwitches%>>%SystemDrive%\Installed_Updates.log %delay% ) ELSE echo VC++ 2005 detected in %detect_VC05%>>%SystemDrive%\Detected_Updates.log reg query "%detect_VC08%" 1>nul 2>&1 if !ERRORLEVEL!==1 ( start /wait .\VC++\vcredist_x86_2008.exe %OldSwitches% echo VC++ 2008 %OldSwitches%>>%SystemDrive%\Installed_Updates.log %delay% ) ELSE echo VC++ 2008 detected in %detect_VC08%>>%SystemDrive%\Detected_Updates.log ) goto :EOF | В корне системного диска создаются файлы Installed_Updates.log и Detected_Updates.log в которых содержится, соответственно, список установленных и обнаруженных обновлений после выполнения скрипта. Описание и содержимое файлов из папки KBxxxxx Активация и деактивация возможности установки обновлений для Internet Explorer сразу после его установки производится с помощью скрипта IEPostUpdateInstall.cmd с ключами соответственно /On и /Off. Пример содержания файла IEPostUpdateInstall.cmd... Код: echo off if /I "%1"=="/On" goto PostUpdateOn if /I "%1"=="/Off" goto PostUpdateOff exit :PostUpdateOn REG ADD "HKLM\SOFTWARE\Microsoft\Internet Explorer\Setup\7.0\WU" /v ForcePostUpdateInstall /t REG_DWORD /d 1 /f REG ADD "HKLM\SOFTWARE\Microsoft\Internet Explorer\Setup\8.0\WU" /v ForcePostUpdateInstall /t REG_DWORD /d 1 /f exit :PostUpdateOff REG DELETE "HKLM\SOFTWARE\Microsoft\Internet Explorer\Setup\7.0\WU" /f REG DELETE "HKLM\SOFTWARE\Microsoft\Internet Explorer\Setup\8.0\WU" /f exit | Описание и содержимое файлов из папки Config Список, порядок обновлений, замена ключей установки обновлений заданных по-умолчанию (/quiet /norestart в файле Set,txt) задается в файле KB.txt (поддерживаемые разрешения EXE, CMD, MSI), который должен быть расположен в папке Config, а собственно обновления в папке KBxxxxxx. Пример содержания файла KB.txt (указывается только имя обновления, для большинства в виде KBxxxxxx и ключи установки - для EXE, MSI при необходимости, для CMD - обязательно)... Код: KB961118 KB963707 /quiet /norestart KB892130 KB898461 KB923789 /Q KB950762 KB951376 KB951978 KB951748 KB951066 KB946648 KB952954 KB950974 KB952287 KB958644 KB955069 KB954459 KB957097 KB954600 KB956802 KB955839 KB952069 KB956803 KB958687 KB960225 KB938464 KB967715 KB923561 KB956572 KB952004 KB960803 KB959426 KB961501 KB968537 KB970238 KB969897 KB971633 KB961371 KB973346 IE8-x86 /quiet /norestart /update-no IEPostUpdateInstall /On KB969897-IE8 KB971930-IE8 IEPostUpdateInstall /Off KB890830 /R KB943729 KB909520 KB955704 msxml4 wua30-x86 KB905474 | Пример содержания файла Set.txt... Код: ;...=Командная строка для выполнения задержки перед установкой каждого обновления delay=start /wait /min .\Tools\nircmd.exe wait 3000 ;...=Ключ вкл./выкл. принудительной перезагрузки после установки, возможные значения Yes, No ForceReboot=Yes ;...=Набор ключей для новых обновлений (возможно переопределение для каждого обновления в файле KB.txt) MainSwitches=/quiet /norestart ;...=Набор ключей для обновлений .Net Framework из папки dotnetfx35 NetUpdatesSwitches=/quiet /norestart ;...=Набор ключей для установки rootsupd.exe, vcredist_x86_2005.exe, vcredist_x86_2008.exe OldSwitches=/Q ;...=Набор ключей для установки dotnetfx35.exe NetSwitches=/quiet /norestart /nopatch /lang:RUS ;...=Ветка реестра для определения текущей кодовой страницы (определяет использование text_ru.txt или text_en.txt) detect_CP=HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage ;...=Ветка реестра для определения версии операционной системы detect_SP=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion ;...=Ветки реестра для определения установлен Internet Explorer (заданной в KB.txt версии) в системе или нет detect_IE=HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP0\ie detect_IE7=HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP0\ie7 detect_IE8=HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP0\ie8 ;...=Ветка реестра для определения установлен Microsoft .NET Framework 3.5 SP1 в текущей системе или нет detect_NET=HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 3.5 SP1 ;...=Ветка реестра для определения установлено обновление KB954550 в системе или нет detect_KB954550=HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP4\KB954550-v5\Filelist\0 ;...=Ветка реестра для определения установлено обновление KB954550 в системе или нет detect_KB958481=HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 2.0 Service Pack 2\SP2\KB958481 ;...=Ветка реестра для определения установлено обновление KB954550 в системе или нет detect_KB958483=HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 3.0 Service Pack 2\SP2\KB958483 ;...=Ветка реестра для определения установлено обновление KB954550 в системе или нет detect_KB958484=HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 3.5 SP1\SP1\KB958484 ;...=Путь для определения необходимости установки обновления KB923789 detect_KB923789=!WINDIR!\system32\Macromed\Flash\flash.ocx ;...=Путь для определения необходимости установки обновления KB946648 detect_KB946648=!ProgramFiles!\Messenger\msgsc.dll ;...=Путь для определения необходимости установки обновления Windows Update Agent detect_WUA=!WINDIR!\system32\SoftwareDistribution\Setup\ServiceStartup\wups.dll\7.2.6001.788 ;...=Ветка реестра для определения установлено обновление в системе или нет исходя из наличия сведений в реестре для его удаления path_UNINSTALL=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall ;...=Ветка реестра для определения установлены библиотеки VC++ 2005 в системе или нет detect_VC05=!path_UNINSTALL!\{7299052b-02a4-4627-81f2-1818da5d550d} ;...=Ветка реестра для определения установлены библиотеки VC++ 2008 в системе или нет detect_VC08=!path_UNINSTALL!\{9A25302D-30C0-39D9-BD6F-21E6EC160475} ;...=Ветка реестра для определения установлены библиотеки MSXML 4 в системе или нет detect_MSXML4=!path_UNINSTALL!\{196467F1-C11F-4F76-858B-5812ADC83B94} ;...=Ветка реестра для определения установленной версии обновления Windows Roots Certificates detect_rootsupd=HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\{EF289A85-8E57-408d-BE47-73B55609861A} ;...=Определение переменной, которой в случае обнаружения ветки %detect_rootsupd% будет присвоено значение версии обновления Windows Roots Certificates detect_ver_rootsupd=0 ;...=Номер актуальной версии обновления Windows Roots Certificates cur_ver_rootsupd=20,0,2195,0 ;...=Дата последнего изменения файла MRT.exe (Microsoft Removal Tool) (используемый метод определения установленой версии KB890830) cur_date_mrt=07.05.2009 ;...=Командная строка для остановки службы оптимизации .Net Framework на период установки сборника NetStop=start /high /wait /min sc stop clr_optimization_v2.0.50727_32 >nul | Список веток реестра для проверки наличия обновления в системе задается в файле RegKeys.txt, который должен быть расположен в папке Config. Переменная !number! в ветке реестра должна заменять номер обновления KBxxxxxx. Пример содержания файла RegKeys.txt... Код: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\!number! HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\!number!-v2 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\!number!-IE7 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\!number:~,8!-v2-IE7 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\!number!-IE8 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\!number!_WM9 HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 3.5 SP1\SP1\!number! HKLM\SOFTWARE\Microsoft\Updates\WGA\SP0\!number! HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP0\!number:~,3! HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP0\!number!-IE7 HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP0\!number:~,8!-v2-IE7 HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP0\!number!-IE8 HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP20\!number! HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP3\!number! HKLM\SOFTWARE\Microsoft\Updates\MSXML4SP2\Q!number:~+2! HKLM\SOFTWARE\Microsoft\Updates\Windows Media Player\SP0\!number!_WM9 HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP4\!number!-v2 HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP4\!number! | Текст для информационных сообщений скрипта задается в файлах Text_ru.txt и Text_en.txt. Пример содержания файла Text_ru.txt (для корректного отображения русскоязычных сообщений кодировка файла при сохранении должна быть OEM)... Код: Title_Cmd=Post-!Chk_SP! Title_InfoBox=" !Title_Cmd! updates for '!Chk_OS:~10! !Chk_SP! !Chk_Lang!'" Text_InfoBox_0="Извините, этот сборник только для '!Chk_OS! !Chk_SP! !Chk_Lang!'..." Text_InfoBox_1="Язык операционной системы и обновлений не совпадает..." Text_InfoBox_2="Обновление началось, закройте все приложения и дождитесь сообщения о завершении установки..." Text_InfoBox_3="Для завершения установки Ваш компьютер будет перезагружен примерно через 10 секунд..." Text_InfoBox_4=Установка завершена... Text_InfoBox_5="Для завершения установки перезагрузите Ваш компьютер при первой же возможности..." MRT_Group=Антивирусные | Пример содержания файла Text_en.txt для англоязычного сборника... Код: Title_Cmd=Post-!Chk_SP! Title_InfoBox=" !Title_Cmd! updates for '!Chk_OS:~10! !Chk_SP! !Chk_Lang!'" Text_InfoBox_0="Sorry, this pack only for '!Chk_OS! !Chk_SP! !Chk_Lang!'..." Text_InfoBox_1="Language does not match..." Text_InfoBox_2="Started..." Text_InfoBox_3="Preparing for restart (~10 sec)..." Text_InfoBox_4=The end... Text_InfoBox_5="When you can, please, restart your system..." MRT_Group=Antiviruses | Информация о системе предназначенной для обновления задается в файле OS_ver.txt. Пример содержания файла OS_ver.txt (для корректной обработки русскоязычных строк кодировка файла при сохранении должна быть OEM)... Код: ;...=Версия операционной системы для которой предназначены обновления(например: Microsoft Windows XP, Microsoft Windows Server 2003) Chk_OS=Microsoft Windows XP ;...=Версия Service Pack операционной системы для которой предназначены обновления (например: SP2, SP3) Chk_SP=SP3 ;...=Язык операционной системы для которой предназначены обновления (English или Russian) Chk_Lang=English ;...=Название любой русскоязычной папки расположенной в русскоязычной системе в %ALLUSERSPROFILE%\ (например: Главное меню, Рабочий стол) Chk_Lang1=Главное меню ;...=Название любой англоязычной папки расположенной в англоязычной системе в %ALLUSERSPROFILE%\ (например: Start Menu, Desktop) Chk_Lang2=Start Menu ;...=Задание начального значения переменной используемой для проверки наличия англо- или русскоязычной папки в %ALLUSERSPROFILE%\ Chk_Lang3=None | Описание и содержимое файлов реестра из папки Tools Файлы DisableSR.reg и HideFileExt.reg - не являются обязательными. Первый файл необходим для корректного отключения службы восстановления, второй для включения отображения расширений файлов в проводнике. Если Вы считаете, что они Вам не нужны, просто не создавайте эти файлы. Пример содержания файла DisableSR.reg... Код: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore] "DisableSR"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\sr] "Start"=dword:00000004 "ImagePath"=hex(2):5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\ 74,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,52,\ 00,49,00,56,00,45,00,52,00,53,00,5c,00,73,00,72,00,2e,00,73,00,79,00,73,00,\ 00,00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\sr\Parameters] "FirstRun"=dword:00000001 | Пример содержания файла HideFileExt.reg... Код: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] "HideFileExt"=dword:00000000 | Описание и содержимое файлов из папки IE Файлы DDL_IE.reg и IELnk.exe - не являются обязательным. Первый файл необходим для отключения отображения ярлыка Internet Explorer на рабочем столе, второй для удаления ярлыка с панели быстрого запуска, а также очистки временных папок после перезагрузки. Если Вы считаете, что они Вам не нужны, просто не создавайте эти файлы. Пример содержания файла DDL_IE.reg... Код: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu] "{871C5380-42A0-1069-A2EA-08002B30309D}"=dword:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel] "{871C5380-42A0-1069-A2EA-08002B30309D}"=dword:00000001 | Пример общей структуры папок (список файлов в папках зависит от кол-ва обновлений) Архив с готовым скриптом, файлами конфигурации, необходимыми утилитами и файлами реестра тут...
| Всего записей: 495 | Зарегистр. 02-02-2008 | Отправлено: 10:17 01-03-2009 | Исправлено: TechnicsKuzya, 18:50 09-09-2009 |
|