@ECHO OFF :: IF "%1"=="" GOTO EOF :: IF NOT EXIST %1 GOTO EOF SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION :: Check if FIND.EXE is available and if not, prompt user SET FindAvailable= SET Download= FIND.EXE /? >NUL 2>&1 IF ERRORLEVEL 1 ( SET FindAvailable=No ECHO This batch file requires Microsoft's FIND utility. SET /P Download=Do you want more infos? [y/N] ) :: Start download if requested IF /I "%Download%"=="Y" ( START "Find" "http://www.ss64.com/nt/find.html" ECHO. ECHO Make sure FIND.EXE is in the PATH. ECHO Then try again. ) :: Abort if FIND.EXE is not available yet IF "%FindAvailable%"=="No" GOTO Abort :: Check if FINDSTR.EXE is available and if not, prompt user SET FindStrAvailable= SET Download= FINDSTR.EXE /? >NUL 2>&1 IF ERRORLEVEL 1 ( SET FindStrAvailable=No ECHO This batch file requires Microsoft's FINDSTR utility. SET /P Download=Do you want more infos? [y/N] ) :: Start download if requested IF /I "%Download%"=="Y" ( START "FindStr" "http://www.ss64.com/nt/findstr.html" ECHO. ECHO Make sure FINDSTR.EXE is in the PATH. ECHO Then try again. ) :: Abort if FINDSTR.EXE is not available yet IF "%FindStrAvailable%"=="No" GOTO Abort :: Initialize variables ::Strings SET SRCPATH=%~d0 SET DESTPATH=%~dp0 :: operating system ws03|WinXP SET OS=ws03 :: operating system Service Pack version SP1|SP2 SET SP=SP1 :: operating system language en|fr SET LNG=en :: operating system installation image path WIN51Ix.SPx A=standard|B=Web|P=Professional SET TYPE=A SET SOURCE=%~dp0WIN51I%TYPE%.%SP% ::-Here above ^^^^^^^^ put path to i386 directory SET /A COUNTER=0 @CLS :: variables used to build HF inf file SET STDOUT=TEMP\HFUPDATE.INF IF EXIST %STDOUT% DEL /Q %STDOUT% SET HFTITLE=TEMP\HFTITLE.DAT IF EXIST %HFTITLE% DEL /Q %HFTITLE% SET SVCPACK=TEMP\SVCPACK.TXT IF EXIST %SVCPACK% DEL /Q %SVCPACK% :: clean TEMP dir if exist TEMP rd /s /q TEMP md temp :: build header for HIVEUPD.CMD call echo./[AddReg.Upgrade]/ i>TEMP\HIVESFT.TXT echo./[DelReg]/ i>TEMP\HIVECLS.TXT ::MSFT no longer put IE HF here ::SET BASEPATH=Software\%lng%\com_microsoft.internetexplorer6x\x86WinXP :: operating system HF base path windowsnetserver2003family|windowsxp SET HFOS=windowsnetserver2003family SET BASEPATH=WU\Software\%lng%\com_microsoft.%hfos%\x86WinXP ::-Here above ^^^^^^^^ put path to HF directory :// build header for stdout SET AdvPack = "The correct version of Advpack.dll was not found, update halted." SET SetupAPI = "Required file: SetupAPI.dll, is missing from your system." TYPE>%STDOUT% 2>NUL ECHO [Version] >> %STDOUT% ECHO Provider = "Microsoft" >> %STDOUT% ECHO Signature = "$Windows NT$" >> %STDOUT% ECHO AdvancedINF = 2.0,%AdvPack% >> %STDOUT% ECHO. >> %STDOUT% ECHO [DefaultInstall] >> %STDOUT% ECHO RequiredEngine = setupapi.dll,%SetupAPI% >> %STDOUT% ECHO CheckAdminRights = 1 >> %STDOUT% ECHO AddReg = Product.Add.Reg >> %STDOUT% ECHO RunPreSetupCommands = >> %STDOUT% ECHO RunPostSetupCommands = >> %STDOUT% ECHO. >> %STDOUT% ECHO [Product.Add.Reg] >> %STDOUT% ECHO/Starting HF Slipstreaming Phase 1 CALL :CHECKHFS CALL :END GOTO EOF :CHECKHFS FOR /F "USEBACKQ DELIMS==" %%H IN (`DIR /AD /OGN /B %BASEPATH%\*`) DO ((SET DIRNAME=%%~nxH)&(CALL :NEXTONE)) GOTO EOF :NEXTONE FOR /F "USEBACKQ DELIMS==" %%I IN (`DIR /A-D /OGN /B %BASEPATH%\%DIRNAME%\*.EXE`) DO ((SET FILENAME=%%~nI)&(CALL :FIRST_LETTER)&(CALL :HFLANG)&(CALL :SP_SHORT_TITLE)&(CALL :PRODUCT_NAME)&(CALL :EXTRACT)&(CALL :INTEGRATE)&(call :HIVEXXX)&(CALL :ADDLINES) ) GOTO EOF :ECHOING ECHO. %DIRNAME% GOTO EOF :FIRST_LETTER SET FIRST_LETTER=%FILENAME% SET FIRST_LETTER=%FILENAME:~0,1% GOTO EOF :HFLANG IF /I "%FIRST_LETTER%"=="Q" ( FOR /F "DELIMS=_ TOKENS=5" %%J IN ("%FILENAME%") DO (SET HFLANG=%%J) ) IF /I "%FIRST_LETTER%"=="W" ( FOR /F "DELIMS=- TOKENS=4" %%J IN ("%FILENAME%") DO (SET HFLANG=%%J) ) GOTO EOF :SP_SHORT_TITLE IF /I "%FIRST_LETTER%"=="Q" ( FOR /F "DELIMS=_" %%J IN ("%FILENAME%") DO (SET SP_SHORT_TITLE=%%J) ) IF /I "%FIRST_LETTER%"=="W" ( FOR /F "DELIMS=- TOKENS=2" %%J IN ("%FILENAME%") DO (SET SP_SHORT_TITLE=%%J) ) GOTO EOF :PRODUCT_NAME IF /I "%FIRST_LETTER%"=="W" ( FOR /F "DELIMS=- TOKENS=1" %%J IN ("%FILENAME%") DO (SET HFNAME=%%J) ) IF /I "%FIRST_LETTER%"=="Q" ( FOR /F "DELIMS=_ TOKENS=2" %%J IN ("%FILENAME%") DO (SET HFNAME=%%J) ) IF /I "%HFNAME%"=="W2K" SET PRODUCT_NAME="Windows 2000" IF /I "%HFNAME%"=="WindowsServer2003" SET PRODUCT_NAME="Windows Server 2003" IF /I "%HFNAME%"=="WindowsXP" SET PRODUCT_NAME="Windows XP" IF /I "%HFNAME%"=="WindowsMedia" SET PRODUCT_NAME="Windows Media Player" SET PRODUCT_NAME=%PRODUCT_NAME:"=% GOTO EOF :EXTRACT SET /A COUNTER=!COUNTER! + 1 IF /I "%HFNAME%"=="WindowsMedia" ( GOTO EOF ) START "HF extract" /WAIT /MIN "%BASEPATH%\%DIRNAME%\%FILENAME%.EXE" /q /x:TEMP\EXTRACT\%SP_SHORT_TITLE% PING 1.1.1.1 -n 1 -w 1000 2>NUL | FIND "TTL=" >NUL :SP_TITLE ECHO/[%SP_SHORT_TITLE%]>>%HFTITLE% for /f "tokens=1-2 delims==" %%a in ('type TEMP\EXTRACT\%SP_SHORT_TITLE%\update\update_%SP%GDR.inf ^| findstr /I "SP_TITLE"') do set SP_TITLE=%%~b ECHO/SP_TITLE =%SP_TITLE%>>%HFTITLE% ://code ECHO."startx ""@37@\rundll32.exe SETUPAPI,InstallHinfSection ProductInstall.ServerFiles 128 @EXEDIR@\%SP_SHORT_TITLE%.inf""">>%SVCPACK% ECHO."startx ""@37@\rundll32.exe SETUPAPI,InstallHinfSection ProductInstall.GlobalRegistryChanges.Install 128 @EXEDIR@\%SP_SHORT_TITLE%.inf""">>%SVCPACK% rem ECHO.com_microsoft.%FILENAME%;%SP_TITLE%;(%FILENAME%);Microsoft Security Bulletin MS05-0xx;%DIRNAME%;>>b:\list.txt :///code ECHO.%COUNTER%%SP_TITLE% ECHO. Extraction has completed successfully. GOTO EOF :INTEGRATE IF /I "%HFNAME%"=="WindowsMedia" ( GOTO EOF ) START "HF integrate" /WAIT /MIN "%BASEPATH%\%DIRNAME%\%FILENAME%.EXE" /integrate:%source% /Q ECHO. Integrated install has completed successfully. PING 1.1.1.1 -n 1 -w 1000 2>NUL | FIND "TTL=" >NUL GOTO EOF :HIVEXXX IF /I "%HFNAME%"=="WindowsMedia" ( GOTO EOF ) IF EXIST TEMP\EXTRACT\%SP_SHORT_TITLE%\UPDATE\UPDATE_%SP%GDR.inf COPY /Y TEMP\EXTRACT\%SP_SHORT_TITLE%\UPDATE\UPDATE_SP1GDR.inf TEMP\%SP_SHORT_TITLE%.inf >NUL ://IF EXIST TEMP\EXTRACT\%SP_SHORT_TITLE%\UPDATE\UPDATE_%SP%GDR.inf MOVE TEMP\EXTRACT\%SP_SHORT_TITLE%\UPDATE\UPDATE_SP1GDR.inf TEMP\EXTRACT\%SP_SHORT_TITLE%\UPDATE\%SP_SHORT_TITLE%.inf >NUL call HIVEUPD.CMD %SP_SHORT_TITLE% %SP_TITLE% %SERVICE_PACK_NUMBER% Product.Add.Reg GOTO EOF :ADDLINES call HFUPDATE.CMD %SP_SHORT_TITLE% %SP_TITLE% %SERVICE_PACK_NUMBER% Product.Add.Reg call HFUPDATE.CMD %SP_SHORT_TITLE% %SP_TITLE% %SERVICE_PACK_NUMBER% Product.Add.Reg.Server GOTO EOF :DELETEPACKAGE IF EXIST %SOURCE%\I386\SVCPACK\%SP_SHORT_TITLE%.exe ( DEL /F /Q %SOURCE%\I386\SVCPACK\%SP_SHORT_TITLE%.exe ECHO. HF package has been deleted successfully. ) GOTO EOF :UNNAMEDSECTION ://superceeded IF EXIST TEMP\EXTRACT\%SP_SHORT_TITLE% ECHO %SP_SHORT_TITLE% >> TEMP\FILEVER.TXT IF EXIST TEMP\EXTRACT\%SP_SHORT_TITLE%\*.* FOR /F "USEBACKQ DELIMS==" %%J IN (`DIR /A-D /OGN /B TEMP\EXTRACT\%SP_SHORT_TITLE%\*.* 2^>NUL`) DO FVER /S TEMP\EXTRACT\%SP_SHORT_TITLE%\%%J >> TEMP\FILEVER.TXT IF EXIST TEMP\EXTRACT\%SP_SHORT_TITLE%\*.* ( FOR /F "USEBACKQ DELIMS==" %%J IN (`DIR /A-D /OGN /B TEMP\EXTRACT\%SP_SHORT_TITLE%\*.* 2^>NUL`) DO ( IF EXIST TEMP\PACKED\%%~nJ.??_ FOR /F "USEBACKQ DELIMS==" %%K IN (`DIR /A-D /OGN /B TEMP\PACKED\%%~nJ.??_ 2^>NUL`) DO ECHO Existing %%K REPLACED BY %SP_SHORT_TITLE% NEWER VERSION >> TEMP\REPLACED.TXT MAKECAB /D CompressionMemory=21 /D CompressionType=LZX /L TEMP\PACKED TEMP\EXTRACT\%SP_SHORT_TITLE%\%%J > NUL ) ) IF EXIST TEMP\EXTRACT\%SP_SHORT_TITLE%\*.* FOR /F "USEBACKQ DELIMS==" %%J IN (`DIR /A-D /OGN /B TEMP\EXTRACT\%SP_SHORT_TITLE%\*.* 2^>NUL`) DO DEL TEMP\EXTRACT\%SP_SHORT_TITLE%\%%J /Q GOTO EOF :ABORT :END ECHO/End of HF Slipstreaming Phase 1 PING 1.1.1.1 -n 1 -w 1000 2>NUL | FIND "TTL=" >NUL :EOF :// Version 4:22 PM 5/20/2006