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: 3916
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: 1037
Joined: 12.07.2016, 21:00


Return to Installation / Updating

Who is online

Users browsing this forum: No registered users and 13 guests