Qu'est-ce que la pile de maintenance (servicing stack) et comment fonctionne-t-elle ?

Dans Windows, il y a quelque chose appelé la pile de maintenance (servicing stack) qui semble remplir le rôle d’un gestionnaire de paquets. Je ne la comprends pas très bien, seulement qu’il semble que Component-Based Servicing (CBS), Windows Installer, Windows Update, et WinSxS font partie de la pile de maintenance ou sont autrement impliqués dans la maintenance.

J’ai fait beaucoup de recherches et je n’ai pas été en mesure de trouver une vue d’ensemble facile à comprendre sur la maintenance dans Windows. C’est pourquoi je pose les questions suivantes :

  • Qu’est-ce que la maintenance et que fait la pile de maintenance ?

  • Comment fonctionne la pile de maintenance ? Quels rôles jouent CBS, Windows Installer, WinSxS et Windows Update ?

1. Qu’est-ce que la maintenance et que fait la pile de maintenance ?

La maintenance est le nom donné à la configuration des mises à jour Windows ou des fonctionnalités Windows (installation, suppression de mises à jour/fonctionnalités). Cela peut être fait lorsque Windows est en cours d’exécution (en ligne) ou contre une partition Windows non active/ou un WIM monté (hors ligne) :

Qu’est-ce que la maintenance ? La maintenance est l’acte d’installer un rôle,
une fonctionnalité, un service pack ou une mise à jour Windows sur un système d’exploitation Windows. La plupart du temps,
la maintenance est effectuée dans un état en ligne. Dans ce cas, en ligne
signifie que le système d’exploitation est opérationnel lorsqu’un changement est
effectué. La maintenance en ligne est ce que la plupart des gens font et est généralement effectuée via
Windows Update ou en double-cliquant sur une mise à jour téléchargée. Il y a également
un état hors ligne. Hors ligne, bien sûr, signifie que l’installation se
fait contre une version non active de Windows. C’est ce que
beaucoup de grandes entreprises et OEM font avec leurs fichiers image, ils
les montent avec IMAGEX ou DISM et ensuite installent des correctifs ou d’autres
mises à jour sur ces images pour réduire leur temps de correctif lorsque l’image
est déployée en production.

2. Qu’est-ce que CBS

CBS signifie Component Based Servicing et a été ajouté dans Windows Vista. Dans les versions plus anciennes de Windows, l’installation était basée sur des fichiers PH0 pour installer les fonctionnalités/mises à jour.

Dans Windows Vista, la nouvelle architecture de composants, connue sous le nom de
Component-Based Servicing (CBS) change la façon dont ces composants
sont installés. L’architecture CBS est bien plus robuste et sécurisée
que les installateurs des systèmes d’exploitation précédents. Les utilisateurs bénéficient d’un
processus d’installation plus complet et contrôlé qui permet aux
mises à jour, pilotes et composants optionnels d’être ajoutés tout en
atténuant simultanément les problèmes d’instabilité causés par
une installation incorrecte ou partielle. CBS permet aux composants et fonctionnalités
d’IIS à Windows Media Player d’être empaquetés en petits modules qui
englobent la fonctionnalité complète du composant. En d’autres termes,
chaque module contient tous les fichiers, paramètres de registre et méthodes
nécessaires pour une installation ou suppression complète du composant qu’il
contient.

3. Quel rôle joue WinSxS

Ce dossier a été ajouté dans Windows XP, pour avoir la capacité d’avoir 2 versions différentes de DLL installées côte à côte (sxs) sur un système. Microsoft l’a utilisé pour permettre le nouveau support des thèmes dans WinXP, tout en conservant les anciennes DLL système pour ne pas casser les anciennes applications Win95. Il a également été utilisé pour corriger l’enfer des DLL. Sous Win95, vous aviez le problème qu’un outil nécessite une DLL Windows spéciale en version 4 et l’outil suivant en version 4.10. Si vous installiez le plus récent, il pouvait casser l’ancien programme, si vous installiez l’ancien après le plus récent, l’ancien fonctionnait mais le plus récent plantait car la DLL ne supportait pas toutes les fonctionnalités requises.

Depuis Vista, le dossier WinSxS contient tous les fichiers utilisés par Windows et lorsque vous activez une fonctionnalité, les fichiers ne sont pas copiés vers la destination dans C:\Program Files, ils sont liés via un lien physique (hardlink) :

L’un des changements les plus importants entre les versions précédentes de Windows et
Windows Vista a été le passage d’un système d’exploitation décrit par INF à la composantisation.
Un composant dans Windows est un ou plusieurs binaires, un fichier catalogue, et un
fichier XML qui décrit tout sur la façon dont les fichiers doivent être
installés. Des clés de registre et services associés au type de
permissions de sécurité que les fichiers doivent avoir. Les composants sont regroupés
en unités logiques, et ces unités sont utilisées pour construire les différentes
éditions de Windows.

Tous les composants du système d’exploitation se trouvent dans le dossier WinSxS
— en fait nous appelons cet emplacement le magasin de composants. Chaque
composant a un nom unique qui inclut la version, la langue et
l’architecture processeur pour lesquelles il a été compilé. Le dossier WinSxS est
le seul emplacement où le composant se trouve sur le système, toutes les autres
instances des fichiers que vous voyez sur le système sont “projetées” par
lien physique depuis le magasin de composants. Permettez-moi de répéter ce dernier point
— il n’y a qu’une seule instance (ou copie complète des données) de chaque version de
chaque fichier dans le système d’exploitation, et cette instance est située dans le dossier WinSxS.
Donc vu de cette perspective, le dossier WinSxS est
vraiment l’intégralité du système d’exploitation, appelé “flat” dans
les systèmes d’exploitation antérieurs. Cela explique également pourquoi vous ne serez plus
invité à insérer un média lors d’opérations telles que le Vérificateur de
fichiers système (SFC), ou lors de l’installation de fonctionnalités et rôles supplémentaires.

4. Quel rôle joue Windows Installer ?

C’est sans rapport avec WinSxS, le dossier C:\Windows\Installer est le dossier où le service Windows Installer copie ses données pour pouvoir modifier ou supprimer les programmes installés.

5. Quel rôle joue Windows Update ?

Windows Update télécharge les fichiers vers C:\Windows\SoftwareDistribution\Download et la pile de maintenance copie les données dans WinSxS et tente de créer les liens physiques, si cela échoue (quand les fichiers sont encore utilisés), l’opération est en attente et la mise à jour est installée au prochain démarrage (l’écran de configuration des mises à jour Windows à l’arrêt et au démarrage).