@echo off
rem --------- Optional: An die eigenen Verhaeltnisse anpassen -----------

rem Pfad zum Arbeitsverzeichnis setzen, beispielsweise workdir=d:\wb\
rem Ohne Anpassung verwendet das Skript den Ordner, in dem es liegt
rem Keine Leerzeichen im Pfad!
set workdir=%~d0%~p0

rem Mount-Ordner setzen, beispielsweise d:\wb\mount
rem Ohne Anpassung erstellt das Skript ihn in dem Ordner, in dem es liegt
rem Ordner darf nicht vorhanden sein!
rem Keine Leerzeichen im Pfad!
set mountdir=%workdir%mount

rem Name der PE-WIM-Datei setzen, normalerweise boot.wim
set pefile=boot.wim

rem Namen der Patch-Dateien setzen
set patch1=Windows8.1-KB2919442-x64.msu
set patch2=Windows8.1-KB2919355-x64.msu
set patch3=Windows8.1-KB2932046-x64.msu
set patch4=Windows8.1-KB2934018-x64.msu
set patch5=Windows8.1-KB2937592-x64.msu
set patch6=Windows8.1-KB2938439-x64.msu
set patch7=Windows8.1-KB2959977-x64.msu

rem ------------- Ende der Anpassungen -----------

rem Vorabpruefungen
if exist %mountdir% goto Fehler1
if not exist %workdir%%pefile% set fehlt=%pefile%&&goto Fehler2
if NOT exist %workdir%%patch1% set fehlt=%patch1%&& goto Fehler2
if NOT exist %workdir%%patch2% set fehlt=%patch2%&& goto Fehler2
if NOT exist %workdir%%patch3% set fehlt=%patch3%&& goto Fehler2
if NOT exist %workdir%%patch4% set fehlt=%patch4%&& goto Fehler2
if NOT exist %workdir%%patch5% set fehlt=%patch5%&& goto Fehler2
if NOT exist %workdir%%patch6% set fehlt=%patch6%&& goto Fehler2
if NOT exist %workdir%%patch7% set fehlt=%patch7%&& goto Fehler2

rem Vorsichtshalber aufraeumen
dism /cleanup-mountpoints
dism /cleanup-wim

set operation=*** Mountpoint erstellen ***
echo.
echo %operation%
echo.
md %mountdir%
if errorlevel 1 goto fehler4

set operation=*** Boot.wim bereitstellen ***
echo.
echo %operation%
echo.
dism /mount-image /imagefile:%workdir%%pefile% /index:1 /mountdir:%mountdir%
if errorlevel 1 goto fehler4

set operation=*** Updates installieren ***
echo.
echo %operation%
echo.
dism /add-package /packagepath:%workdir%%patch1% /image:%mountdir%
if errorlevel 1 goto fehler4
dism /add-package /packagepath:%workdir%%patch2% /image:%mountdir%
if errorlevel 1 goto fehler4
dism /add-package /packagepath:%workdir%%patch3% /image:%mountdir%
if errorlevel 1 goto fehler4
dism /add-package /packagepath:%workdir%%patch4% /image:%mountdir%
if errorlevel 1 goto fehler4
dism /add-package /packagepath:%workdir%%patch5% /image:%mountdir%
if errorlevel 1 goto fehler4
dism /add-package /packagepath:%workdir%%patch6% /image:%mountdir%
if errorlevel 1 goto fehler4
dism /add-package /packagepath:%workdir%%patch7% /image:%mountdir%
if errorlevel 1 goto fehler4

set operation=*** Boot.wim neu verpacken ***
echo.
echo %operation%
echo.
dism /image:%mountdir% /cleanup-image /startcomponentcleanup /resetbase
if errorlevel 1 goto fehler4

set operation=*** Bereitstellung aufheben ***
echo.
echo %operation%
echo.
dism /unmount-image /mountdir:%mountdir% /commit
if errorlevel 1 goto fehler4
rmdir %mountdir% /q
if errorlevel 1 goto fehler4

rem Fertig
echo.
echo Fertig.
pause
goto :eof

rem Falls Mount-Ordner bereits vorhanden
:fehler1
echo Fehler: Mount-Ordner existiert bereits
pause
goto :eof

rem Falls Dateien fehlen
:fehler2
echo Fehler: Im Arbeitsverzeichnis fehlt die Datei %fehlt%
pause
goto :eof

rem Fehler durch externes Programm
:fehler4
echo Operation fehlgeschlagen: %operation%
pause
goto :eof
