Cos’è WINSXS per Win 2008 e Vista?

askcore

Molti utenti di Windows Vista o Windows Server 2008 si chiedono “perchè la cartella WinSxS è così grossa e cresce sempre ?”

La risposta dipende dalla componentizzazione, una caratteristica introdotta con Windows Vista e versioni successive.

Da Vista in poi si passa da un sistema operativo i cui elementi erano descritti tramite file INF ai componenti. Questo passaggio ricorda la conversione che si ebbe tra i file .INI ed il registry.

Un componente in Windows è costituito da uno o più binari, un file catalogo, e un file XML che dice tutto su come i file devono essere installati, dalle chiavi del registry interessate ai servizi ai permessi di sicurezza che i file devono avere. I componenti sono raggruppati in unità logiche, e queste unità sono usate per costruire le diverse edizioni di Windows.

Tutti i componenti del S.O. sono nella cartella WinSxS è infatti detta magazzino dei componenti. Ogni componente ha nome unico che include la versione, la lingua, e l’architettura di processore per cui è costruito. La cartella WinSxS è l’unico posto dove si trovano i componenti nel sistema, tutte le altre istanze dei file che si vedono nel sistema sono “proiettate” tramite collegamento dal component store. Quindi c’è una sola copia di ogni file del S.O., e questa copia è nella cartella WinSxS. Quindi la cartella WinSxS è in realtà l’intero S.O.

Questo metodo operativo è il motivo per cui non si viene più richiesti di inserire dischi durante operazioni come il System File Check (SFC), o installando caratteristiche addizionali.

Questo spiega perchè la cartella è grossa, ma non perchè cresce nel tempo: la risposta è il servicing (i cosiddetti Service Pack). Nelle precedenti versioni l’unità atomica dei SP erano i file, da Vista sono i componenti. Quando si aggiorna un file binario si aggiorna l’intero componente, e la nuova versione viene memorizzata INSIEME alla vecchia nel component store. La versione più recente è proiettata nel sistema ma la vecchia è ancora lì, e da questo la crescita della cartella.

Non tutti i componenti nel component store devono essere proiettati nel sistema. Ad es., dove IIS è presente ma non installato, i componenti relativi sono nel component store, ma non proiettati sul sistema. C’è in breve una versione differente del componente per ogni livello di Service Pack e tutte queste diverse versioni sono nella cartella WinSxS, anche se non sono immediatamente applicabile. Ad es., un singolo package GDR di un SP che aggiorna un componente, può finire per installarne quattro versioni in WinSxS e il doppio su un sistema a 64 bit in alcuni casi.

Ci si chiederà perchè le versioni vecchie dei componenti non vengono rimosse: la risposta è la affidabilità, in quanto il component store, con le altre informazioni sul sistema, consente in un certo istante di determinare quale sia la più appropriata versione di un componente da proiettare nel sistema. Ciò consente di disinstallare aggiornamenti di sicurezza senza avere problemi con l’ordine di disinstallazione, ad esempio. Se inoltre si decide di installare componenti opzionali, si possono proiettare le versioni dei componenti più opportune basandosi sulle relazioni tra i componenti basandosi su quelle disponibili e sulle informazioni sulle interrelazioni tra i componenti, avendo la possibilità di reagire alle mutate necessità del sistema in modi che non erano precedentemente possibili.

L’unico modo di ridurre la dimensione della cartella WinSxS è disinstallare i package che hanno installato i componenti in prima battuta. Ciò si può fare usando un eseguibile chiamato VSP1CLN.EXE, contenuto nel Service Pack 1, uno strumento che consente di rendere permanenti i Service Pack (non rimovibili) nel sistema, e di rimuovere tutti i componenti di versione superata. Ciò è possibile perchè se i S.P. sono permanenti le versioni RTM precedenti certo non servono più. Questa è la sintassi supportata:

VSP1CLN.exe [/h] | [/o: percorso ai file di windows] [/quiet]

/? o /h: mostra la lista dei comandi di Vsp1cln.
/o:[percorso ai file di Windows]: cartella contenente il S.P. di Windows Vista di cui rimuovere i file RTM.
/quiet: esecuzione senza alcun feedback.
/verbose: mostra dettagli ulteriori durante l’esecuzione del comando.

Quindi sì, WinSXS è una cartella molto ingombrante e destinata a crescere sempre più all’invecchiare del S.O.: contenti di saperlo ?

Si noti che la struttura e le funzioni dei service pack e del component store potranno variare nel tempo.

Fonte: Askcore