Windows Update - TrustedInstaller e l’installazione transazionale

Da Windows Vista in avanti è stata rivista gran parte dell’architettura di aggiornamento del sistema operativo. Si è passati da un’installazione “stand-alone” dei singoli aggiornamenti ad un sistema transazionale. Questa tecnica transazionale è molto più robusta e sicura della precedente, in quanto garantisce che il sistema si trovi sempre in uno stato consistente.

In parole più semplici, gli aggiornamenti vengono raggruppati in transazioni, e viene fatto un commit delle operazioni solamente se tutti gli aggiornamenti in una transazione non presentano errori nella propria di installazione. Al contrario se anche un solo aggiornamento fallisce la sua installazione, allora tutta la transazione viene annullata e nessun componente viene aggiornato. 

CBS-component

Questa nuova architettura prende il nome di Component-Based Servicing (CBS) , e si basa sul concetto di componente. Un component è un’unità di “cambiamento dello stato del sistema” (file, registry key, settings, risorsa, etc.). Esso possiede un identità ed è trattato come un oggetto atomico. I componenti sono organizzati in deployment che a loro volta sono contenuti all’interno di package, unità di distribuzione . Un componente, così come un deployment ed un pacchetto, può avere delle dipendenze da soddisfare prima della propria installazione.

CBS-wu

I principali componenti di questo nuovo sistema sono i seguenti:

  • Windows Modules Installer (TrustedInstaller.exe, CBS) : è il servizio principale che lavora a livello di pacchetto/update ed analizza l’applicabilità di un aggiornamento
  • Component Servicing Infrastructure (CSI) : infrastuttura di base che lavora a livello di deployment e a livello di componente, gestisce l’accesso e l’interazione con lo store dei componenti
  • Component Store: è formato dalla cartella %WinDir%\WinSxS e da un ramo particolare del registro. Esso è il ripostiglio di tutti i componenti e del loro manifesto (file XML che ne descrive le proprietà e le dipendenze)

In linea generale un pacchetto di aggiornamento viene passato al servizio CBS, che ne valuta l’applicabilità e lo scompatta nei vari deployment. A questo punto ogni deployment viene passato al livello CSI che si occupa di verificare la presenza dei vari componenti, ne controlla le dipendenze ed il loro stato. Infine il componente viene installato sul sistema. Tutte queste operazioni vengono eseguite all’interno di una transazione kernel che ne garantisce la corretta esecuzione.

Negli eventi di sistema vengono loggate tutte le operazioni effettuate, quindi un sguardo agli eventi è sempre il passo base per qualsiasi problema nell’installazione dei componenti. Questi eventi sono autoesplicativi, quindi ometto la loro descrizione. Il provider di tali eventi è Microsoft-Windows-Servicing.

Dopo questa panoramica, che è necessaria per capire la nuova architettura, nel prossimo articolo vi illustrerò dove recuperare maggiori informazioni in caso di errori durante l’installazione di un componente.

 

Gianluca Bertelli
Support Engineer
Microsoft Enterprise Platforms Support