Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Обновления для Microsoft Windows XP, часть 6

Модерирует : KLASS, IFkO

vu1tur (26-09-2009 23:59): часть 7  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

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
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Обновления для Microsoft Windows XP, часть 6
vu1tur (26-09-2009 23:59): часть 7


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru