Letztes Windows 7 Update

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.

Win7-support-end

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.