Windows 11 Support / CAB+PSF-Updates

Windows 11 Support / CAB+PSF-Updates

Postby aker » 10.09.2021, 22:31

Moin,

ich habe mich einmal kurz mit dem Aufbau der CAB+PSF-Updates beschäftigt.

Teil 1: Dateiformat
Letztendlich sieht es wohl so aus, dass in der CAB-Datei alle CAT-/MUM-/MANIFEST-Dateien enthalten sind, die eigentlichen Patches für die Binaries (bislang in den Unterordnern gespeichert) jedoch nicht. Dazu gibt es die PSF-Datei.
In der CAB-Datei ist jedoch eine XML-Datei namens "express.psf.cix.xml" enthalten, welche angibt, wo in der PSF-Datei was zu finden ist.
Beispiel:
Code: Select all
    <File id="1" name="msil_system.management.automation_31bf3856ad364e35_1.0.0.0_none_6340379543bd8a03\f\System.Management.Automation.dll" length="329" time="132751294726499715" attr="128">
      <Hash alg="SHA256" value="fbfc446e122c017e76f6033123eb4dfe2cd099a0d8c40b89331992c1fb9df455" />
      <Delta>
        <Source type="RAW" offset="753664" length="329">
          <Hash alg="SHA256" value="fbfc446e122c017e76f6033123eb4dfe2cd099a0d8c40b89331992c1fb9df455" />
        </Source>
      </Delta>
    </File>

Das würde übersetzt bedeuten, dass eine Datei mit der relativen Pfadangabe "msil_system.management.automation_31bf3856ad364e35_1.0.0.0_none_6340379543bd8a03\f\System.Management.Automation.dll" vom Offset "753664" mit der Länge "329" Bytes aus der PSF gelesen und unter oben angegebenem Namen gespeichert werden soll.
Gilt wohl aber auch nicht immer, da es neben dem Typ "RAW" auch den Typ "PA30" gibt, für den ich einmal einen Artikel mit Python-Script gelesen habe, der das erklärte.

Das von abbodi1409 verwendete Programm "PSFExtractor" würde ich ungerne benutzen, da es dotNET vorraussetzt und ich bei wsusou ungerne eine Abhängigkeit zu dotNET herstellen wollte. Bedeutet also Portierung des Algorithmus nach VBScript oder ähnliches.
:arrow: https://github.com/Secant1006/PSFExtractor

Teil 2: Implementierung

Das ist meines Erachtens jedoch nur ein Teil der Arbeit.
Angenommen, ListMissingUpdateIds.vbs würde auf Windows 11 ausgeführt werden und ein Ergebnis liefern, sähe die resultierende "MissingUpdateIds.txt" vermutlich wie folgt aus:
Code: Select all
1111111,aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
2222222,bbbbbbbb-cccc-dddd-eeee-ffffffffffff
3333333,cccccccc-dddd-eeee-ffff-gggggggggggg


Nach Übersetzung der IDs mittels "ListUpdatesToInstall.cmd" würde eine "UpdatesToInstall.txt" im für die Verarbeitung schlechtesten Fall wir folgt aussehen (einzelne Updates mittels Absätzen voneinander getrennt):
Code: Select all
..\w110-x64\glb\windows10.0-kb1111111-x64_sha1.cab
..\w110-x64\glb\windows10.0-kb1111111-x64_sha1.psf
..\w110-x64\glb\windows10.0-kb1111112-x64_sha1.cab

..\w110-x64\glb\windows10.0-kb2222222-x64_sha1.cab
..\w110-x64\glb\windows10.0-kb2222222-x64_sha1.psf

..\w110-x64\glb\windows10.0-kb3333333-x64_sha1.cab


Die Frage, die sich mir jetzt stellt, ist:
Wie kann "InstallListedUpdates.cmd" jetzt sicher die CAB+PSF-Updates zusammenführen, ohne dabei versehentlich falsche Dateien zu matchen, oder auch Dateien nicht zu matchen, oder zu erkennen, wenn zu einer CAB die PSF fehlt (oder umgekehrt). Letzteres ist sicherlich der einfachste Punkt, darf aber nicht vergessen werden.

Viele Grüße
Wer Rechtschreibfehler findet, darf sie behalten oder an den Meistbietenden versteigern. / Everybody finding a misspelling is allowed to keep or sell it.
aker

WSUS Offline Update „Community Edition“
https://gitlab.com/wsusoffline/wsusoffline/-/releases
aker
 
Posts: 3999
Joined: 02.03.2011, 15:32

Re: Windows 11 Support / CAB+PSF-Updates

Postby Dalai » 11.09.2021, 13:12

aker wrote:Das von abbodi1409 verwendete Programm "PSFExtractor" würde ich ungerne benutzen, da es dotNET vorraussetzt und ich bei wsusou ungerne eine Abhängigkeit zu dotNET herstellen wollte.

Ehrlich gesagt sehe ich darin kein Problem, denn alle (hierfür relevanten) Windows-Versionen haben doch bereits .NET integriert, ohne dass man es "aus Versehen" entfernen/deaktivieren könnte wie beim IE oder WSH. Von daher sehe ich es als nicht sinnvoll an, das Rad nochmal zu erfinden, wenn es nicht notwendig ist.

Ja, man ist dann von einem weiteren Tool abhängig, aber im Laufe der Jahre sind ja auch welche zu WOU hinzugekommen (Aria2, SigCheck etc.). Einzig auf die Lizenz des Tools müsste man schauen, ob die ein Weiterverteilen in der Form erlaubt.

Grüße
Dalai

PS: Auch wenn ich selbst native Tools bevorzuge, haben manchmal Programme, die .NET voraussetzen, doch ihre Vorteile.
Dalai
 
Posts: 1041
Joined: 12.07.2016, 21:00

Re: Windows 11 Support / CAB+PSF-Updates

Postby aker » 19.09.2021, 21:22

Dalai wrote:Ehrlich gesagt sehe ich darin kein Problem, denn alle (hierfür relevanten) Windows-Versionen haben doch bereits .NET integriert, ohne dass man es "aus Versehen" entfernen/deaktivieren könnte wie beim IE oder WSH. Von daher sehe ich es als nicht sinnvoll an, das Rad nochmal zu erfinden, wenn es nicht notwendig ist.

Ich würde nur sehr ungerne von einer Komponente abhängen, die man deaktivieren kann. Bei WSH, WMI und co. musste dies (zumindest seit XP) mit Helferlein wie NTlite und co. erfolgen, während man .NET ganz regulär über die Systemsteuerung ein bzw. ausschalten kann.

Dalai wrote:PS: Auch wenn ich selbst native Tools bevorzuge, haben manchmal Programme, die .NET voraussetzen, doch ihre Vorteile.

.NET ist auch eine meiner Stamm-Umgebungen, da die darauf basierenden Sprachen (v.a. VB.NET und C#) einige der wenigen sind, die ich halbwegs beherrsche (ich bin in Sachen Programmierung nicht gelernt, sondern lediglich Autodidakt).
Ich sehe auch die Vorteile von .NET, bin aber noch nicht ganz dabei, es für wsusou verpflichtend zu machen.

Hinsichtlich "das Rad neu erfinden": Hatte ich nicht vor.
Meine Idee sähe so aus, dass ich einen Batch oder eine VBS baue, die die express.psf.cix.xml parsed und die Daten aus der PSF-Datei mittels AutoIt-EXE extrahiert. Da könnte man dann problemlos RAW und PA30 implementieren und wie bislang unabhängig bleiben. Für das Extrahieren könnte ich irgendwo noch eine Funktion in VB.NET rumliegen haben und für das Entpacken von PA30-Patches habe ich mal ein Python-Script im Netz gefunden. Das ließe sich nach AutoIt portieren und mit einem Symtax nach dem Prinzip "ExtractPSF.exe <PSF file> <offset> <length> <compression method> <target>" implementieren.
So ganz ausgegoren ist das Prinzip jedoch noch nicht...

Viele Grüße
Wer Rechtschreibfehler findet, darf sie behalten oder an den Meistbietenden versteigern. / Everybody finding a misspelling is allowed to keep or sell it.
aker

WSUS Offline Update „Community Edition“
https://gitlab.com/wsusoffline/wsusoffline/-/releases
aker
 
Posts: 3999
Joined: 02.03.2011, 15:32

Re: Windows 11 Support / CAB+PSF-Updates

Postby Dalai » 20.09.2021, 23:32

aker wrote:Ich würde nur sehr ungerne von einer Komponente abhängen, die man deaktivieren kann. Bei WSH, WMI und co. musste dies (zumindest seit XP) mit Helferlein wie NTlite und co. erfolgen, während man .NET ganz regulär über die Systemsteuerung ein bzw. ausschalten kann.

Kann man das denn im Windows 11? Bei allen vorherigen Windows-Versionen kann man maximal die .NET Framework Advanced Services deaktivieren, was aber nicht das eigentliche .NET ist. Ab Windows 8.1 kann man außerdem noch .NET 3.5 aktivieren oder deaktivieren, falls irgendein Programm ein älteres .NET braucht. Genau das meinte ich ja mit "kann man nicht aus Versehen entfernen/deaktivieren".

Grüße
Dalai
Dalai
 
Posts: 1041
Joined: 12.07.2016, 21:00

Re: Windows 11 Support / CAB+PSF-Updates

Postby boco » 21.09.2021, 00:14

Die Basis-Komponente des nativ vom OS mitgebrachten .NET kann man weder deaktivieren noch deinstallieren.
Microsoft update catalog: http://catalog.update.microsoft.com/v7/site/
Windows Install media download: https://support.microsoft.com/en-us/help/15088/windows-create-installation-media
boco
 
Posts: 2391
Joined: 24.11.2009, 17:00
Location: Germany

Re: Windows 11 Support / CAB+PSF-Updates

Postby aker » 21.09.2021, 20:50

Ihr habt Recht, da habe ich mir etwas falsch gemerkt.
.NET 4.x kann unter den Client-Systemen (zumindest bei Windows 10) nicht deaktiviert werden, auf den Server Platformen (zumindest w2k16 und w2k22) geht es jedoch über den Server Manager.

Das sollten wir uns noch einmal durch den Kopf gehen lassen, bevor wir auf .NET setzen.

Viele Grüße
Wer Rechtschreibfehler findet, darf sie behalten oder an den Meistbietenden versteigern. / Everybody finding a misspelling is allowed to keep or sell it.
aker

WSUS Offline Update „Community Edition“
https://gitlab.com/wsusoffline/wsusoffline/-/releases
aker
 
Posts: 3999
Joined: 02.03.2011, 15:32

Re: Windows 11 Support / CAB+PSF-Updates

Postby Dalai » 30.09.2021, 14:29

Mir stellt sich die Frage, was dann aus dem System wird. Der Server Manager und einige andere grafische Komponenten sind von .NET abhängig. Würde man .NET deinstallieren, würde man aus dem System vermutlich ein Server Core machen (hab's nicht ausprobiert). Aber auch die PowerShell ist gleichermaßen von .NET abhängig, und die PowerShell ist eine der wichtigsten Komponenten auf einem Server Core, soweit ich weiß. Daher frage ich mich, wie das funktionieren soll, eine so tief ins System integrierte Komponente deinstallieren zu können, ohne das System komplett zu ruinieren. Wer hat Lust, das mal durchzuspielen? ;)

Grüße
Dalai
Dalai
 
Posts: 1041
Joined: 12.07.2016, 21:00

Re: Windows 11 Support / CAB+PSF-Updates

Postby aker » 01.10.2021, 22:05

Ich weiß nicht, wer auf eine solche Idee kommen würde, aber ich möchte den Fall halt ausschließen, solange man dafür nicht irgendwelche Helferlein nutzen muss.
Aber aktuell habe ich keine Zeit, etwas in der Art zu entwickeln. Wenn jemand von euch möchte, gerne.

Viele Grüße
Wer Rechtschreibfehler findet, darf sie behalten oder an den Meistbietenden versteigern. / Everybody finding a misspelling is allowed to keep or sell it.
aker

WSUS Offline Update „Community Edition“
https://gitlab.com/wsusoffline/wsusoffline/-/releases
aker
 
Posts: 3999
Joined: 02.03.2011, 15:32

Re: Windows 11 Support / CAB+PSF-Updates

Postby boco » 02.10.2021, 01:17

Edit:
Server 2022 - Verhalten bestätigt, .NET 4.8
Server 2019 - Verhalten bestätigt, .NET 4.7
Server 2016 - Verhalten bestätigt, .NET 4.6
Server 2012R2 - Verhalten bestätigt, .NET 4.5
Server 2012 - Verhalten bestätigt, .NET 4.5

Server 2008R2 - .NET 3.5.1 ist standardmäßig aus.
Server 2008 - .NET 3.0 ist standardmäßig aus.


Getestet mit Server LTSC 2022 Standard mit Desktop Experience. DotNET 4.8 kann nicht entfernt werden. Das Kästchen ist zwar vorhanden und aktiviert, aber nicht abwählbar (ausgegraut).
Zum Vergleich, das DotNET 3.5 wurde von mir manuell angewählt und kann auch wieder abgewählt werden (ist schwarz).

Image

Fazit: Es sind also nur die Legacy-Server betroffen, und die haben mit PSFX nix am Hut.
Microsoft update catalog: http://catalog.update.microsoft.com/v7/site/
Windows Install media download: https://support.microsoft.com/en-us/help/15088/windows-create-installation-media
boco
 
Posts: 2391
Joined: 24.11.2009, 17:00
Location: Germany

Re: Windows 11 Support / CAB+PSF-Updates

Postby aker » 02.10.2021, 07:44

Bei mir ließ sich .NET 4.8 entfernen (Server 2022 Eval)…

(Beachte, dass es einen Assistenten zum Hinzufügen und einen zum Entfernen von Features gibt. Und Dalai hat Recht, danach startet der Server Manager nicht mehr.)
Wer Rechtschreibfehler findet, darf sie behalten oder an den Meistbietenden versteigern. / Everybody finding a misspelling is allowed to keep or sell it.
aker

WSUS Offline Update „Community Edition“
https://gitlab.com/wsusoffline/wsusoffline/-/releases
aker
 
Posts: 3999
Joined: 02.03.2011, 15:32

Next

Return to Installation / Updating

Who is online

Users browsing this forum: Majestic-12 [Bot] and 44 guests