Sinds Windows Vista / Windows Server 2008 krijg ik nog regelmatig vragen over de WinSXS map in C:\Windows en dan met name de vraag waarom deze map zo groot is?
Collega Joseph Conway legt in zijn blogpost voor het Windows Core team uit wat er in deze map staat. Om het probleem van de “DLL hell” die voorheen bestond op te lossen is de belangrijkste verbetering die in Windows Vista / Windows Server 2008 werd doorgevoerd de opbouw uit losse componenten. In plaats van dat het besturingssysteem door een enkele INF bestand werd beschreven zijn het nu sets van binaire bestanden, catalogbestanden en XML bestanden. Omdat Windows installaties nu met alle features worden geleverd zitten er ook functies bij die je wellicht niet gebruikt. Door bijv. gebruik te maken van het Anytime Upgrade programma worden deze extra features geactiveerd. In eerste instantie is de map WinSXS dus vrij groot omdat het alle installatie bestanden bevat. Maar omdat alles in deze map staat wordt er bij een uninstall van een update of bij het controleren van de systeembestanden met de System File Checker (SFC.EXE) niet meer om de Windows DVD gevraagd.
Wanneer er echter updates verschijnen of een Service Pack worden in de WinSXS folder alle nieuwe versies van de componenten toegevoegd, ook al worden deze op dit moment niet gebruikt. Op deze manier word er wanneer er later een feature wordt aangezet direct gebruik gemaakt van de laatste versie van dit component. De oude versie staat er echter ook nog steeds mocht een service pack weer verwijderd worden.
Een ding is echter niet meegenomen in die blog post en dat is dat de bestandsgrootte die gerapporteerd word wanneer je de eigenschappen van deze WinSXS map bekijkt niet helemaal correct is.
Veel van de bestanden zijn namelijk hardlinks naar bestanden die op dat moment in gebruik zijn in Windows:
Dit betekent dat de bestandsgrootte die wordt weergegeven voor de WinSXS map ook veel bestanden meeneemt die in Windows, Windows\System32 etc staan.
Opruimen!
Da’s mooi allemaal maar als je toch de map wilt opruimen wat kun je dan doen? Met Windows Vista Service Pack 1 werd er een tooltje (%windir%\system32\vsp1cln.exe) meegeleverd, welke in Service Pack 2 vervangen is door het tooltje COMPCLN. Dit haalt alle oude componenten uit de WinSXS folder weg die door Service Pack 2 zijn vernieuwd. Je kunt dan uiteraard niet meer terug naar de situatie voor Service Pack 2 maar het ruimt lekker op ;-).
Thanks,
