CBS-Store durch Updates defekt, wie reparieren?

Im Internet und speziell im Microsoft Answers-Forum tauchen immer wieder Anwender auf, bei denen die SP1-Installation oder das Windows Update auf Kreuz fliegt. Wertet man die CBS.log aus, stellt sich heraus, dass ein CBS_E_XML_PARSER_FAILURE-Fehler auftritt, d. h. der CBS-Store mit den Update kann nicht ausgewertet werden. Wie kann man da eventuell eingreifen?


Werbung




Es ist schon auffällig, wie viele Treffer man erhält, wenn man im Internet nach CBS_E_XML_PARSER_FAILURE sucht. Irgendwie scheint das Update-System bzw. der Update-Store schnell kaputt zu gehen. Ob da Virenscanner, Internet Security Suites, Optimierungstools oder Fehler in Updates dahinter stecken, kann ich nicht sagen. Ich habe auch noch keinen entsprechenden Fehler auf meinen Systemen gehabt.

Trotzdem reizt mich die Frage, wie man einem beschädigten CBS-Store zu Leibe rücken und ggf. Reparaturen vornehmen kann. Aber auch hier eine deutliche Warnung: Alle Ausführungen basieren auf einem theoretischen Modell und ich übernehme keine Gewähr, dass es wirklich funktioniert. [Nachtrag: Dank eines Hinweises von André Ziegler gibt es zwischenzeitlich aber auch einen Verweis auf einen Microsoft-Artikel, der die Möglichkeiten zur Diagnose und Reparatur beschreibt und so die hier skizzierten Ansätze abrundet.]

Windows Update-Pakete sind beschädigt

Zuerst möchte ich einen Blick auf das Problem werfen. Unter [1] skizziere ich, wie sich das System auf beschädigte Systemdateien prüfen lässt. Ein Protokoll der Prüfung findet sich in der Datei CBS.log im Ordner %windir%\Logs\CBS\. Bei Problemen in Verbindung mit der Installation des Service Pack 1 werden ebenfalls Statusinfos in die CBS.log geschrieben. Unter [13] gehe ich auch kurz auf das Thema Systemupdate-Vorbereitungstool und die Auswertung der Protokolldateien ein.

Gelegentlich stellen Anwender dann bei der Auswertung der Protokolldateien fest, dass Katalog-Dateien (.cat) und/oder Manifestdateien (.mum) beschädigt sind oder fehlen. Dabei gibt der Dateiname der fehlerhaften Dateien oft einen Hinweis auf das zugrunde liegende Update. Der Beitrag [2] im Microsoft Answer-Forum spiegelt diese Situation wieder:

Corrupt Total count: 1 Unavailable repair files:
servicing\packages\
Package_7_for_KB2454826~31bf3856ad364e35~amd64~~6.1.2.0.mum
servicing\packages\
Package_7_for_KB2454826~31bf3856ad364e35~amd64~~6.1.2.0.cat

Hier sind sowohl eine Manifestdatei (Microsoft Update Manifest, .mum, dies ist ein XML-Dokument, welches die Beschreibung der zu installierenden Paketdateien enthält) als auch eine Katalogdatei (.cat, ein Sicherheitskatalog im Binärformat) nicht reparierbar.  Der Text KB2454826 im Dateinamen weist auf einen Knowledge-Base-Artikel für ein Update hin. Sucht man bei Microsoft nach diesem Begriff, trifft man auf den Beitrag unter [3]. Nach diesem Schema sollten sich die betroffenen Update-Pakete identifizieren lassen.

Wirft man einen zweiten Blick in die CBS.log-Datei, die sich im Ordner %WinDir%\Logs\CBS\ befindet, stellt sich oft heraus, dass ein CBS_E_XML_PARSER_FAILURE-Fehler auftritt, d. h. der CBS-Store mit den Update kann nicht ausgewertet werden. Im konkreten Beispiel scheint es so zu sein, dass der Parser eine XML-Datei in Form der .mum-Datei benötigt, diese aber nicht findet. Und auch der Sicherheitskatalog fehlt.

Die profunde Reparaturmethode wäre ein Inplace Upgrade [4]. Danach ist Windows 7 mit etwas Glück in der Lage, die Updates wieder auszuführen und die SP1-Installation läuft durch. Aber man kann ggf. auch "filigraner” vorgehen.

Fehlende .mum-Dateien sind ein Hinweis darauf, dass ein Update nicht korrekt  installiert werden konnte. Dann fehlt die XML-Struktur. Dies kann nach [10] durch einen beschädigten WinSxS-Unterordner, durch nicht kompatible Virenscanner und Security Suites oder einen Malware-Befall verursacht werden.

Versuch den Update-Store zurückzusetzen


Werbung

Eine Radikalkur wäre es, Windows 7 den beschädigten Update-Store irgendwie zu entziehen. Unter [5] bin ich auf eine Diskussion zu Windows Vista gestoßen, wo auch ein beschädigtes Windows Update einen CBS_E_XML_PARSER_FAILURE-Fehler auslöste. MVP MowGreen machte dort einen interessanten Vorschlag, der auch unter Windows 7 funktionieren könnte (hab’s aber nie probiert).

First, try renaming the copy in WINDOWS\system32\CatRoot2

*RIGHT* click edb.chk and choose ‘Rename’  Name it edb.old http://windowshelp.microsoft.com/Win…01bf71033.mspx
IF you’ve had to stop the WU service in order to rename edb.chk,
suggest you also rename Tmp.edb to Tmp.old, also, while the service has
been stopped.
After renaming the above, Start the WU service. *
If no joy, rename the copy of edb.chk in
WINDOWS\SoftwareDistribution\DataStore\Logs
Try another manual installation of KB937286

Now try to install the *manually* downloaded copy of KB937286
* IF a message comes up that the file is being used, open the Services
console and STOP the Windows Update service, then rename edb.chk
Manage services in Windows Vista

Zuerst soll man den Ordner %WinDir%\system32\CatRoot mit administrativen Berechtigungen umbenennen (zum Beispiel könnte man den Ordner CatRoot2 nennen – allerdings gibt es unter Windows 7 bereits einen solchen Ordner – daher müsste dieser vorher, ggf. in CatRoot2-old, umbenannt werden). Falls dies unter einem laufenden Windows 7 nicht klappt, ließe sich das Umbenennen ggf. in einer Windows RE-Umgebung (gebootet über den Systemreparaturdatenträger) vornehmen. Oder man stoppt den Update-Dienst über den Dienste-Manager dienste.

Dann soll die Datei edb.chk in .old umbenannt werden. Das Gleiche gilt für die tmp.edb. Nach dem Starten des Windows Update-Diensts sollten sich die Updates neu installieren lassen. Unter [11] findet sich ein Artikel von Microsoft, der das Thema adressiert. Hier muss ggf. etwas experimentiert werden, um den richtigen Ansatz zu finden.

Update-Pakete entpacken und kaputte Dateien nachinstallieren?

Falls aber nur eine oder zwei .cat- und/oder eine .mum-Dateien aus einem genau definierten Update-Paket kaputt sind, wäre ein noch filigranerer Ansatz denkbar. Eigentlich sollte es reichen, wenn man die in der CBS.log oder in der CheckSUR.log gemeldeten Dateien ersetzt. Der Pfad aus der Angabe servicing\packages\ ist auch recht einfach zu bestimmen: %WinDir%\servicing\packages\. Bleibt also nur noch das Problem: Wie kommt man an die Originale der beschädigten Dateien heran? Das kann ganz schön kniffelig werden. Aber ich bin vielleicht unter [6, 7] fündig geworden. Nachfolgend möchte ich ein paar Ansätze skizzieren, um vielleicht zum Ziel zu gelangen.

Versuch 1: Entpacken und Update per WUSA installieren …

Im ersten Schritt versuchen Sie das als kaputt gemeldete Update-Paket von den Microsoft Update-Seiten als .msu-Datei herunterzuladen. Meist reicht es, mit der KB-Nummer (z. B. KB2454826) auf den Microsoft-Seiten zu suchen. Die .msu-Datei ist ein gepacktes Update-Archiv.

Nun gilt es, das Update zwangsweise zu installieren. Gemäß [6] lässt sich ein Update-Paket mittels des Programms WUSA.exe mit folgendem Befehl installieren.

wusa.exe d:\934307\Windows6.0-KB934307-x86.msu

Im obigen Beispielbefehl wird vorausgesetzt, dass das Paket im Pfad D:\934307 abgelegt ist. Sie brauchen Wusa.exe übrigens nicht aus einer administrativen Eingabeaufforderung aufzurufen. Das Programm fordert entsprechende Berechtigungen über die Benutzerkontensteuerung an. Mit wusa.exe /? lässt sich übrigens ein Dialogfeld mit den Aufrufoptionen anzeigen.

Versuch 2: Wenn’s nicht klappt, setz den Paketmanager ein

Klappt der Ansatz mit wusa.exe nicht, kann man noch einen Schritt weiter gehen. Gemäß [6] lässt sich das .msu-Packet aus der Eingabeaufforderung mit dem Befehl:

expand -f:* "C:\934307\Windows6.0-KB934307-x86.msu" %TEMP%

in einen temporären Ordner entpacken. Der Schalter –f:* erzwingt das Entpacken aller Dateien des Update-Archivs. Anschließend rufen Sie den Windows-Paketmanager in der Eingabeaufforderung mit folgendem Befehl auf:

pkgmgr.exe /n:%TEMP%\Windows6.0-KB934307-x86.xml

Der Paketmanager fordert über die Benutzerkontensteuerung die benötigten administrativen Rechte an. Anschließend wird die .xml-Datei im temporären Ordner ausgewertet und an Hand dessen das Update installiert. Mit etwas Glück lässt sich das Update so nachträglich fixen.

Die möglichen Aufrufoptionen des Paketmanagers sind in [8] dokumentiert. Zudem lässt sich über den Befehl pkgmgr /? ein Dialogfeld mit Aufrufoptionen anzeigen. Interessant ist dabei, dass man mit

pkgmgr.exe
  
/up:Package_1_for_KB929761~31bf3856ad364e35~x86~~6.0.0.1

die Deinstallation eines Pakets erzwingen kann (der obige Befehl musste hier aus Publikationsgründen in zwei Zeilen umbrochen werden, ist aber als eine Anweisung einzugeben). Hinter /up: ist der Paketname anzugeben. Den Paketnamen können Sie bei Bedarf aus der XML-Datei des .msu-Archiv ermitteln (siehe auch [8]).

Interessierte Leser möchte ich auf [9] verweisen, wo sich noch ein schöner Übersichtsartikel zu den Paketmanagern und anderen Werkzeugen findet.

Dateien einfach ersetzen, ginge das?

Zum Abschluss noch eine Antwort auf die Frage, wie sich eine kaputte Datei ersetzen lässt. Wissen Sie, welche Datei in Windows kaputt ist (an Hand der CBS.log ermittelt)? Eigentlich sollte es ein leichtes sein: Einfach das Update-Paket entpacken und die fehlenden/kaputten .mum-/.cat-Dateien in den Windows-Ordner \servicing\Packages schieben.

Aber dies ist leichter gesagt als getan. Bei der Recherche nach Updates habe ich auf den Microsoft-Seiten zwar Hinweise auf die .mum-Dateien in den Paketbeschreibungen gefunden. Allerdings hatte ich nicht unbedingt Glück, diese .mum-Dateien in den entpackten Update-Archiven zu finden. Aber Versuch macht klug.

Schwieriger wird es bei den Sicherheitskatalogen (.cat), scheinen diese erst nach einer WGA-Prüfung angelegt zu werden. Dies ist auch der Grund, warum ich in den vorhergehenden Abschnitten eine Reparatur über WUSA oder den Paketmanager vorgeschlagen hatte.

Aber es gibt vielleicht doch noch Hoffnung. Sofern Sie Zugriff auf ein zweites, noch funktionierendes System haben, lässt sich nachsehen, ob dort die fehlenden Dateien zu finden sind. Dann kopieren Sie diese in die entsprechenden Ordner des beschädigten Systems. Hierzu muss der Rechner ggf. über einen Systemreparaturdatenträger oder die Windows 7 Setup-DVD gebootet und dann das Windows RE geladen werden.

Ob sich mit diesen Ansätzen aber .cat- und .mum-Dateien erfolgreich ersetzen bzw. restaurieren lassen, kann ich nicht sagen. Ich meine mich aber zu erinnern, dass ich in diversen englischsprachigen Forenthreads genau diesen Ansatz gesehen habe. Also ist auch hier experimentieren angesagt. [Update: Statt sich manuell mit Ersetzen der Dateien zu plagen, empfiehlt sich der in nachfolgendem Abschnitt skizzierte Ansatz.]

Mit den hier skizzierten Methoden sollten sich trotzdem einige Probleme beheben lassen. Hilft dies nicht, wird ein Inplace Upgrade [4] ausgeführt, so dass Update neu installiert werden können. Beim Inplace Ugrade bleiben ja die installierten Programme und Dateien erhalten.

Update: Hier gibt’s Hinweise von Microsoft zur Reparatur

Trotz mehrfacher Suche bin ich bei der Vorbereitung dieses Artikels bei Microsoft nicht fündig geworden. Dank eines Hinweises von André Ziegler von WinVistaSide.de  in den Kommentaren kann ich noch einen Ansatz zur Reparatur defekter Dateien anbieten. Unter [12] hat Microsoft einen englischsprachigen Technet-Artikel veröffentlicht, der beschreibt, wie Probleme diagnostiziert und behoben werden können. Für die nicht englischsprachigen Leser hier der recht clevere Ansatz:

  1. Man muss sich die Dateien aus “anderen Quellen” beschaffen (wobei der Artikel auch Hinweise gibt).
  2. Die fehlenden Dateien sind in den Ordner %Windir%\Temp\CheckSUR zu kopieren, wobei eine korrekte Unterverzeichnisstruktur einzuhalten ist.Alle Dateien vom Typ *.mum und *.cat sind in folgenden Ordner zu kopieren:
    %windir%\Temp\CheckSUR\servicing\Packages Wichtig ist dabei: wird eine Manifestdatei (.mum) kopiert, muss auch der korrespondierende Sicherheitskatalog (.cat) in den gleichen Ordner kopiert werden.

    Alle Dateien vom Typ *.manifest sind in den folgenden Ordner zu kopieren:
    %windir%\Temp\CheckSUR\manifests\

  3. Danach ist das Systemupdate-Vorbereitungstool [14] erneut auf der beschädigten Maschine auszuführen.

Das Geniale an diesem Ansatz: Das Systemupdate-Vorbereitungstool wertet den Inhalt des Temp-Ordners aus und repariert an Hand dieses Inhalts die beschädigten Dateien. Man muss sich als Anwender weder um die korrekten Pfade noch um irgendwelche Zugriffskonflikte kümmern.

Im erwähnten Artikel wird auch skizziert, wie man andere Fehler korrigiert und wie man ggf. sonst noch an die fehlenden Dateien gelangt.

[Nachtrag: Wie ich bei Recherchen zu meinen Service Pack 1 Troubleshooting-Tipps gesehen habe, sind auch bei der Fehlermeldung TRUST_E_NOSIGNATURE Manifest- (.mum) und Sicherheitskatalogdateien (.cab) beschädigt oder gelöscht. Der obige Ansatz hilft also auch in diesen Fällen. Zwischenzeitlich habe ich einen weiteren Artikel [15] zur Fehlerdiagnose und Reparatur des Services-Package-Store online gestellt. Dort gibt es auch einen Link zum Skydrive-Store des Microsoft Windows-Answer-Foren-Supports. In Zusammenarbeit mit den Support-Mitarbeitern habe ich dort einige .mum- und .cat-Dateien von Updates zum Download bereitgestellt.]

Links:
1: System auf beschädigte Systemdateien prüfen
2: Microsoft-Forendiskussion zu CBS_E_XML_PARSER_FAILURE
3: Microsoft Update KB2454826
4: Windows 7 Inplace Upgrade
5: KB837286 = Error code 800F0900
6: Support-Beitrag zu WUSA.exe
7: Support-Beitrag zum Entpacken von .msu-Dateien
8: Befehlszeilenoptionen des Paket-Managers
9: Windows-Paketverwaltung
10: Newsgroup-Diskussion zu fehlenden .mum-Dateien
11: MS-Knowledge-Base-Artikel zu Update-Problemen
12: Advanced guidelines for diagnosing and fixing servicing corruption
13: Windows 7 Service Pack 1 Troubleshooting-Tipps
14: Systemupdate-Vorbereitungstool
15: Service Pack 1 Fehlerdiagnose & Package-Store(.mum,.cat) Reparatur


Weitere Infos zu Windows 7 finden sich in meinen Windows 7-Titeln.

(c) by Günter Born www.borncity.de
The source of smart computer books


Werbung

Dieser Beitrag wurde unter Problemlösung, Update, Windows 7, Windows Vista abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

8 Kommentare zu CBS-Store durch Updates defekt, wie reparieren?

  1. Günter Born sagt:

    @André: Danke für den Kommentar samt Link – hätte dich eher anfragen sollen – will diesen Kanal aber nicht zu stark strapazieren ;-).

    Die Info ist zwischenzeitlich als Update eingearbeitet – und hilft sicherlich dem einen oder anderen Leser.

  2. Pingback: Windows 7 Service Pack 1 Troubleshooting-Tipps « Borns IT- und Windows-Blog

  3. Pingback: Service Pack 1 Fehlerdiagnose & Package-Store(.mum,.cat) Reparatur « Borns IT- und Windows-Blog

  4. Bernd Niehoff sagt:

    Der letzte Tipp unter 1 + 2 + 3 hat wunderbar geklappt. Vielen Dank für die kompetente, ausführliche und freundliche Hilfe.
    Bernd Niehoff

    Eine letzte Frage:
    Die unter Windows/Temp/xxx eingerichteten Ordner kann ich doch jetzt wieder löschen – oder?

  5. Pingback: Sprachpakete behindern SP1-Installation « Borns IT- und Windows-Blog

  6. Pingback: System nach SP1-Error 0xC0000034 aufräumen « Borns IT- und Windows-Blog

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.