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“ 12.5.1 / 11.9.9esr
https://gitlab.com/wsusoffline
aker
 
Posts: 3919
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: 1038
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“ 12.5.1 / 11.9.9esr
https://gitlab.com/wsusoffline
aker
 
Posts: 3919
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: 1038
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: 2360
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“ 12.5.1 / 11.9.9esr
https://gitlab.com/wsusoffline
aker
 
Posts: 3919
Joined: 02.03.2011, 15:32


Return to Installation / Updating

Who is online

Users browsing this forum: No registered users and 12 guests