@setlocal @if "%_echo%"=="" echo off set bldtools=%~dp0 path %bldtools%;%path% call %1 %1 %2 %3 %4 %5 %6 %7 %8 %9 set logfile=%logpath%\%~n0.log for %%f in (%logfile%) do mkdir %%~dpf 2>nul for %%f in (%patchtemp%\z) do mkdir %%~dpf 2>nul for %%f in (%patchexe%) do mkdir %%~dpf 2>nul echo %~n0: start %date% %time% > %logfile% if exist %patchddf% erase %patchddf% if exist %patchcab% erase %patchcab% if exist %patchexe% erase %patchexe% call %bldtools%\setlog %loglinkpath% %logpath% :ddfbuild if not exist %bldtools%\hotfixddf.template goto ddffail if not exist %bldtools%\hotfixddf.filelist goto ddffail copy %bldtools%\hotfixddf.template %patchddf% >nul for /f "tokens=1,2,3" %%f in (%bldtools%\hotfixddf.filelist) do call :AddFile %%f %%g %%h if exist %patchddf% goto cabbuild :ddffail echo %~n0: failed to build DDF (missing template or filelist?) goto leave :cabbuild echo makecab /f %patchddf% /d CabinetName1=%patchcab% >> %logfile% makecab /f %patchddf% /d CabinetName1=%patchcab% >> %logfile% if not errorlevel 1 goto exebuild :cabfail echo %~n0: MAKECAB failed: errorlevel %errorlevel% goto leave :exebuild if not exist %patchcab% goto cabfail echo makesfx %patchcab% %patchexe% /run /stub %stubexe% /nonsysfree 20000000 >> %logfile% makesfx %patchcab% %patchexe% /run /stub %stubexe% /nonsysfree 20000000 >> %logfile% if not errorlevel 1 goto done echo makesfx %patchcab% %patchexe% /run /stub %stubexe% >> %logfile% makesfx %patchcab% %patchexe% /run /stub %stubexe% >> %logfile% if not errorlevel 1 goto done :exefail echo %~n0: MAKESFX failed: errorlevel %errorlevel% goto leave :done if not exist %patchexe% goto failedexe echo %~n0 completed %patchexe% :leave echo %~n0: end %date% %time% >> %logfile% endlocal goto :EOF :AddFile set _run= if /i "%1"=="update\update.exe" set _run=/RUN rem No errors for optional files if /i "%2"=="optional" if not exist %newfiles%\%1 goto :EOF rem If there's a patching version of this file, use it, rem otherwise use the file from the new build. set _name=%newfiles%\%1 if exist %patching%\%1 set _name=%patching%\%1 rem Translate preinstalled files to zero-length indicator rem UNLESS that file is named in the filelist (which means rem this might be package to update the preinstall files.) if /i "%3" neq "preinstall" goto nosubzero findstr /i /c:"%1" %sourcelist% >nul if not errorlevel 1 goto nosubzero set _name=%bldtools%\zero :nosubzero echo "%_name%" "%1" %_run% >> %patchddf% goto :EOF