Letztes Windows 7 Update
« | 06 Nov 2021 | »Die letzten Jahre war eine Parallelinstallation von Windows 7 neben Windows 10 für mich “normal” auf meinen PCs und Laptops, denn für Visual Studio 2005 und ein paar ältere Design-Tests ist dieses Setup gut geeignet, wenn man nicht gleich auf eine VM wechseln will.
Die ewig dauernden Updates sind aber sehr nervig, also wurde es Zeit eine “finale” Windows 7 WIM Datei mit allen Updates zu bauen, damit künftige Installationen des abgekündigten Systems “out-of-the-box” laufen.
Dabei bin ich wie folgt vorgegangen:
Erster Download der Updates
Der WSUS Offline Updater ist ein Tool zum reinen Download von Windows Updates, um sie “offline” in ein Windows Image (wie z.B. die Installations-DVD) integrieren zu können.
Da der Windows 7 Support offiziell schon abgelaufen ist und neue Versionen die Downloads nicht mehr unterstützen, nutzt man eine ältere Variante, wie z.B. v11.9 aus dem Jahr 2020, wo die letzten Windows 7 Updates eingetragen sind.
Am Ende hat man dann ein Verzeichnis mit allen .cab
Dateien aus den
unterschiedlichen Knowledge-Base Patches von Microsoft, die man
integrieren kann.
Natürlich kann man sich die nötigen Updates auch selbst über den
Microsoft Update Catalog
herunter laden, wo alle Dateien jedoch als .msu
vorliegen, doch das
spielt für die Integration keine Rolle.
Integration per DISM und Test-Setup
Nun wird eine Windows 7 SP 1 DVD hergenommen und die
sources\install.wim
zur Bearbeitung auf die Platte kopiert.
Für gewöhnlich sind mehrere Windows-Installationen
(Basic, Home, Professional, Ultimate) in einer WIM Datei untergebracht,
doch da ich nur die Professional Variante brauche (Index 3),
habe ich (anfangs) nur dieses Image aktualisiert.
Welches Image auf welchen Index liegt, kann man per
dism /Get-ImageInfo /ImageFile:path\to\install.wim
auslesen,
oder in 7zip über die erste
XML Datei
ausforschen, die man beim Öffnen der .wim
Datei sieht.
dism /Mount-Wim /WimFile:d:\install.wim /Index:3 /MountDir:d:\mount
lädt das Image und
dism /Image:d:\mount /Add-Package /PackagePath:d:\path\to\updates
versucht, alle .cab
und .msu
Dateien zu integrieren.
Am Ende werden mit
dism /Unmount-Wim /MountDir:d:\mount /commit
alle Updates in die WIM-Datei zurückgeschrieben.
Falls es eine Datei namens sources\ei.cfg
auf der Setup-DVD gibt,
kann man diese löschen oder diese umbenennen.
Denn in ihr steht festgelegt, welche Windows Variante installiert
werden soll. Fehlt die Datei, fragt Windows Setup den User, ob er
nun Basic, Home, Professional oder Ultimate installieren möchte.
Für eine Testinstallation, kann man mit Tools wie oscdimg
wieder ein
ISO erstellen um es in einer VM zu nutzen.
Ich habe hingegen meinen Windows Deployment Server
benutzt, um das angepasste Windows-Setup per Netzwerk Boot zu starten
und Windows 7 in einer Test-VM aufzusetzen.
Windows Update und fehlende Komponenten
Meine Testinstallation startete zwar korrekt, allerdings war das integrierte Windows Update nicht mehr lauffähig, da zu alt. Dafür war es notwendig, die neueste Windows Update Agent Komponente manuell nachzuinstallieren. Die aktuelle Version ist 7.6 und man findet sie unter docs.microsoft.com/en-us/troubleshoot/windows-client/deployment/update-windows-update-agent
Die zur Zeit des Postings gültigen Download Links sind:
Download Windows 7 Update Agent 7.6 X64
Download Windows 7 Update Agent 7.6 X86
Nach der Installation + Neustart kann Windows Setup nach fehlenden Aktualisierungen suchen, und da findet man tatsächlich noch einiges. Vor allem viele nicht-kritische Updates werden nach der Suche aufgelistet.
Ich habe mir dann die Mühe gemacht all diese Updates manuell per Update
Catalog herunterzuladen und habe dann die obigen dism
Schritte erneut
ausgeführt um das Windows Image auch mit den letzten Updates und Features
zu füllen.
Am Ende hatte ich so eine halbwegs fertig-gepatchte .wim
Datei, die ich
für meine künftigen Installationen nutzen kann.
Und mit Tools wie oscdimg
kann man dann mit den Dateien der Windows-7 DVD
samt der neuen install.wim
wieder ein ISO Image erzeugen.
Im nachfolgenden Beispiel liegen die DVD-Dateien unter c:\win7dvd
oscdimg -m -o -u2 -udfver102 -bootdata:2#p0,e,bc:\win7dvd\boot\etfsboot.com#pEF,e,bc:\win7dvd\efi\microsoft\boot\efisys.bin c:\win7dvd c:\win7-dvd-image.iso
Und ja, der -bootdata
Parameter ist wirklich eine solche lange Wurst, wo
die Einträge für BIOS und EFI mit #
getrennt werden und der Dateipfad
einfach hinter dem ,b
angefügt wird.
Erkannte Probleme
Manche CAB oder MSU Dateien lassen sich nicht integrieren
Leider geht nicht jede Update-Installation gut aus. Denn manche .cab
oder
.msu
Dateien versetzen das Image in einen Zustand, in dem keine weiteren
Updates mehr integriert werden können.
In diesem Fall bricht dann die Integration ab und alle folgenden Updates
können nicht mehr eingespielt werden.
Hier bleibt einem nichts anderes übrig, als das dism
Logfile durchzugehen
und das letzte störrische Update zu finden.
Dann darf man wieder von vorne mit einer jungfräulichen .wim
Datei anfangen
und diese erneut aktualisieren, wobei das störende Update einfach
übersprungen wird.
Das bewirkt dann am Ende zwar, dass ein paar Updates fehlen und in der fertigen Installation eben genau dieses übersprungenen Update wieder gefunden werden … aber mit diesem Manko lässt sich leben lernen.
Es ist kein Problem nach einem Setup noch 10 weitere fehlende Updates einspielen zu müssen, denn ohne die Integration wären es sonst 300 Updates, die alle erst mal heruntergeladen werden müssten.
Hyper-V unterstützt Windows 7 nicht in Gen-2-VMs
Eigentlich wollte ich auch UEFI
Installation mit Hyper-V
testen. Unter Windows 10 startet ein Windows 7 ISO Image zwar in einer
“Generation-2 VM”, friert aber schon im Boot Screen ein.
Man kann allerdings auf
docs.microsoft.com
nachlesen, dass Hyper-V in Windows 10 die Windows 7 Gastinstallationen nur in
“Generation 1” VMs (also im BIOS Modus) unterstützt. UEFI
Support in Hyper-V
(“Generation 2”) gibt es erst für Gäste ab Windows 8 bzw. Server 2012.
Schade eigentlich, denn Windows 7 ist an sich sehr wohl UEFI
tauglich.
Fazit
Nun, ich weiß nicht, wie lange ich Windows 7 noch am Leben erhalten werde, denn seine aktive Nutzung ist bei mir seit 2017 stark zurückgegangen. Eigentlich sind es nur noch Windows-CE Experimente, die mich in diese ältere Installation booten lassen.
Früher oder später wird das ganze nur noch eine VM sein, doch aktuell sind meine Intel Atom Systeme zu schwach, als dass man mit Windows 7 flüssig darauf arbeiten oder kompilieren könnte.