Das Problem ist, dass die XSLT-Datei extract-update-cab-exe-ids-and-locations.xsl auch zur Berechnung der superseded Updates verwendet wurde. Der Test auf zwei mögliche Pfade in der URL wirkt sich dann
umgekehrt aus: Die Datei ExcludeList-superseded.txt ist nicht ganz vollständig, sondern kann superseded Updates "durchlassen", wenn diese in einem anderen Pfad liegen.
Wenn man die vereinfachte Datei extract-file-ids-and-locations.xsl zur Berechnung der superseded Updates verwendet, werden diese superseded Updates in die Datei ExcludeList-superseded.txt aufgenommen und korrekt ausgeschlossen.
Das lässt sich soweit am Beispiel kb2975061 nachvollziehen:
Mit der Suche nach "kb2975061" in der Datei package.xml bekommt man die URLs und File-IDs:
- Code: Select all
<FileLocation Id="O0VEAKf0QGqTu+tiP/C4IvLBQaQ=" Url="http://download.windowsupdate.com/c/msdownload/update/software/crup/2014/07/windows8.1-kb2975061-x86_3b454400a7f4406a93bbeb623ff0b822f2c141a4.cab"/>
<FileLocation Id="VRj2E1iNkdP/9HR7rDyBElW3IOc=" Url="http://download.windowsupdate.com/d/msdownload/update/software/crup/2014/07/windows8.1-kb2975061-x64_5518f613588d91d3fff4747bac3c811255b720e7.cab"/>
Mit der Suche nach der File-ID "O0VEAKf0QGqTu+tiP/C4IvLBQaQ=" bekommt man die Revision-ID des übergeordneten Bundle-Records:
- Code: Select all
<Update CreationDate="2017-06-27T00:50:59Z" DefaultLanguage="en" UpdateId="7afbe134-24c5-4f6f-abb1-5c2906b8381
3" RevisionNumber="206" RevisionId="15635415" IsLeaf="true" DeploymentAction="Bundle">
<PayloadFiles>
<File Id="O0VEAKf0QGqTu+tiP/C4IvLBQaQ="/>
</PayloadFiles>
<Prerequisites>
<UpdateId Id="23b28b6a-2629-424b-92ae-1b0bda447d2f"/>
<UpdateId Id="3e0afb10-a9fb-4c16-a60e-5790c3803437"/>
<UpdateId Id="6407468e-edc7-4ecd-8c32-521f64cee65e"/>
</Prerequisites>
<BundledBy>
<Revision Id="15635417"/>
</BundledBy>
</Update>
Mit der Suche nach der Revision-ID "15635417" bekommt man den Bundle-Record selber. Hier sieht man, dass kb2975061 durch zwei andere Updates superseded wurde:
- Code: Select all
<Update CreationDate="2017-06-27T00:51:03Z" DefaultLanguage="en" UpdateId="62478d17-511a-4028-990c-72b9911695da" RevisionNumber="208" RevisionId="15635417" IsLeaf="true" IsBundle="true">
<Prerequisites>
<UpdateId Id="23b28b6a-2629-424b-92ae-1b0bda447d2f"/>
<UpdateId Id="3e0afb10-a9fb-4c16-a60e-5790c3803437"/>
<UpdateId Id="0fa1201d-4330-4fa8-8ae9-b877473b6441"/>
<UpdateId Id="6407468e-edc7-4ecd-8c32-521f64cee65e"/>
</Prerequisites>
<SupersededBy>
<Revision Id="21803553"/>
<Revision Id="31031128"/>
</SupersededBy>
<Categories>
<Category Type="UpdateClassification" Id="0fa1201d-4330-4fa8-8ae9-b877473b6441"/>
<Category Type="Company" Id="56309036-4c77-4dd9-951a-99ee9c246a94"/>
<Category Type="Product" Id="6407468e-edc7-4ecd-8c32-521f64cee65e"/>
<Category Type="ProductFamily" Id="6964aab4-c5b5-43bd-a17d-ffb4346a8e1d"/>
</Categories>
</Update>
Fazit: Das Update kb2975061 ist offenbar superseded. Es liegt aber im Pfad '/update/software/crup/' auf dem Server. Weil die XSLT-Datei extract-update-cab-exe-ids-and-locations.xsl die Ergebnisse auf zwei
andere Pfadelemente begrenzt, wurde kb2975061 nicht in die Datei ExcludeList-superseded.txt aufgenommen und fälschlicherweise heruntergeladen.
Wenn kb2975061 jetzt nicht mehr heruntergeladen wird, ist das ganz richtig. Das ist dann das korrekte Ergebnis.
Insofern würde ich in der Datei ExcludeList-superseded.txt nach den fehlenden Updates suchen.
Auf diese Weise können in jedem Download-Ordner 10 - 20 Updates fehlen, im Vergleich zur Vorversion. Das ist ungefähr das, was ich mit meinem Windows-10-Patch beobachtet hatte.
Der Patch mit der vereinfachten Datei extract-file-ids-and-locations.xsl wurde damals aber nicht übernommen. Statt dessen wurde die Datei extract-update-cab-exe-ids-and-locations.xsl modifiziert und der Test auf das Pfadelement '/filestreamingservice/files/' eingefügt. Das war dann ein minimaler Windows-10-Patch, ohne andere Updates zu stören.
Es gibt nur eine minimale Chance, dass die fehlenden Updates bei der Installation tatsächlich fehlen. Das liegt oft daran, dass es verschiedene Windows-Versionen gibt, die unterschiedlich lang unterstützt werden:
- Die Updates für Windows XP POSReady haben beim Update der normalen Desktop-Versionen gestört.
- Server-Versionen werden in der Regel länger unterstützt als Desktop-Versionen.
- Die Updates für Windows 7 ESU gehören vielleicht auch dazu.
In solchen Fällen kann man fehlende Updates in die Dateien ExcludeList-superseded-exclude.txt und ExcludeList-superseded-exclude-seconly.txt aufnehmen.
Viele Grüße