Windows Installer a en effet la réputation d'être lent. Il y a quelques choses qui contribuent à cela et je vais les aborder ci-dessous. Mais au final, il faut se demander si une, deux ou trois minutes sont vraiment un sujet de discorde lors de l'installation et de la désinstallation d'un logiciel. Je prends plus de temps que ça en feuilletant les chaînes de télévision :)
Le registre
C'est le coupable numéro un. Windows Installer fait un usage intensif du Registre pour ses opérations. À mesure que votre système évolue, que vous installez et désinstallez des applications et que la taille du registre augmente ou se fragmente, MSI ralentit. La même application s'installe et se désinstalle beaucoup plus rapidement sur une installation Windows vierge que sur un système arrivé à maturité. La solution ici est d'essayer de garder le registre propre et défragmenté.
Pour le nettoyage du registre, utilisez l'un des nombreux outils disponibles sur le marché. Mais pour la défragmentation du registre, je ne peux pas recommander suffisamment de NTREGOPT pour l'optimisation interne des ruches et de PageDefrag pour la défragmentation des fichiers physiques.
La raison pour laquelle les opérations MSI peuvent devenir lentes dans le registre est liée à la façon dont MSI l'utilise. Windows Installer utilise le registre pour savoir quels produits ont installé quels composants et à quel emplacement il a été installé. Les GUID d'installation d'origine sont utilisés au format compressé. Les informations par machine sur les installations peuvent être trouvées sur HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18
, tandis que les données par utilisateur se trouvent à côté sur un sous HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\
et sur une clé avec le SID de l'utilisateur.
Ces deux clés peuvent être assez volumineuses et contenir de nombreuses sous-clés et valeurs. Ils contrôlent les produits, les composants et les chemins d'accès de chaque application installée. Toutes ces informations doivent être lues et traitées pour une procédure de désinstallation correcte. Cependant, le format de registre répertorie les clés par ordre alphabétique, ce qui permet des recherches binaires. Mais les valeurs ne le sont pas. Ils sont stockés au fur et à mesure de leur création, une procédure de recherche linéaire doit donc être effectuée. Ce qui ralentit les performances de l'algorithme.
Dans l'ensemble, MSI est une méthode plutôt complète et précise pour l'installation et la désinstallation de logiciels. Mais il souffre de sa dépendance au registre. Le système est excellent. C'est le registre Windows qui aurait dû être refait il y a longtemps :)
Pour des informations plus avancées:
Pour une analyse approfondie de ce que fait MSI pendant chaque procédure d'installation ou de désinstallation, reportez-vous à cet article qui explique comment configurer le débogage MSI. Ou, pour des informations moins importantes mais toujours précieuses, celle- ci comment activer la journalisation.