Pourquoi les programmes d'installation de Windows (fichiers .msi) prennent-ils autant de temps à désinstaller que les autres programmes d'installation?

31

Depuis l'époque de Windows XP, les programmes d'installation de Windows (fichiers .msi), y compris les programmes d'installation InstallShield (qui n'est qu'un bootstrap pour MSI), ont mis environ cinq fois plus de temps à désinstaller une application que les autres programmes d'installation. Il en va généralement de même pour l'installation.

Pourquoi prennent-ils encore autant de temps et pourquoi les gens utilisent-ils toujours MSI pour l'installation? Par exemple:

Désinstaller VLC - prend environ 5 secondes.
Désinstaller XYZ - lance "Préparation de la suppression ..." suivi d'un délai de 15 secondes.

Tout ce qu'il fait, c'est supprimer des fichiers et nettoyer le registre (ce qui peut inclure des enregistrements COM), alors pourquoi cela prend-il si longtemps?

Chris S
la source
Je veux juste noter que cela n'est vrai que si vous (1) désactivez la fonction de point de contrôle de restauration du système, et (2) c'est un gigantesque programme d'installation (qui n'est pas unique à Windows Installer - j'ai vu beaucoup d'installateurs Inno lents, tout simplement parce qu'ils sont énormes). J'ai fait installer et supprimer les installateurs Windows en (littéralement) quelques secondes. (Par exemple, Bootvis s'installe en 3 secondes sur mon système. Il se désinstalle dans le même temps. Et non, mon système ne flambe pas non plus.) La différence est que Windows Installer a beaucoup plus de fonctionnalités, donc des programmes plus gros utilisez-le plus souvent.
Mehrdad
@Mehrdad vouliez-vous dire (1) activer la restauration du système?
Chris S
En effet oui, faute de frappe.
Mehrdad
2
Je suis venu ici parce que la désinstallation de MSI prenait une éternité ... et en fait, la raison était que le pop-up Do you want to allow the following program from an unknown publisher to make changes to this computer?se cachait en arrière-plan.
Nicolas Raoul
Voir cette réponse pour les détails techniques permettant d'accélérer les installations MSI: superuser.com/a/296534/11906
Stein Åsmul

Réponses:

32

Le programme d'installation de Windows crée d'abord systématiquement un point de restauration du système, ce qui est une opération assez lente.

Également de l'article intitulé, à juste titre, "Windows Installer est nul" , un extrait:

Auparavant, l'installation consistait en un programme exécutant et prenant quelques étapes simples pour installer votre logiciel, puis faire l'inverse lors de la désinstallation.

Ce n'est pas ainsi que fonctionne Windows Installer. Au lieu d'exécuter un programme pour simplement l'installer et le laisser faire, il examine l'état de votre système, puis examine l'état de la base de données qui est l'installateur du programme, puis effectue une série de calculs trop compliqués sur la façon de concilier les deux.

Il semble qu'au lieu d'exécuter un script d'installation, il s'agit de résoudre un problème de vendeur itinérant. C'est pourquoi cela fonctionne si lentement. Ou du moins, c'est mon impression.

J'ajoute également que le programme d'installation de Windows conserve toutes les informations dans le registre, qui n'est pas la base de données la plus rapide au monde.

harrymc
la source
3
Il est probablement plus rapide que ce qui est dpkgutilisé pour sa base de données de packages (bien que, certes, dpkg ne stocke pas tout dedans): /var/lib/dpkg/statusest un fichier texte plat qui répertorie chaque package qui a été installé une fois, et n'a pas été purgé depuis - et je ne suis même pas sûr qu'il omet toujours les purgés.
SamB
3
dpkgne me ment pas avec des barres de progression qui disent "Temps restant: 0 seconde" pendant deux minutes, cependant ...
LawrenceC
20

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.

Un nain
la source
4
De plus, pour autant que je sache, MSI utilise des transactions pour tout ce qu'il fait, il peut donc toujours effectuer une restauration correcte chaque fois qu'une opération échoue. Cela ne contribue probablement pas non plus à la vitesse mais est tout à fait essentiel pour l'intégrité des données. (J'ai arrêté de compter combien de fois j'avais besoin de nettoyer après l'échec d'un installateur NSIS -.-)
Joey
En ce moment,
j'installe
Très instructif. Pour ma part, je semble obtenir souvent des erreurs "Impossible de créer un point de restauration" (peut-être un point de restauration atteint?) Dans mes journaux msi, de sorte que la création de points de restauration n'a pas la chance d'entraver mes temps d'installation. Quoi qu'il en soit, mes temps d'installation sont toujours lents, et si la recherche de valeur est aussi lente que vous le dites, je suppose qu'il n'y a aucune raison de la part de Microsoft de fournir une implémentation supplémentaire pour des informations supplémentaires sur les feuilles / nœuds dans la spécification binaire du registre. compléter la recherche binaire.
chaz
> 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. Oui.
Alexei Averchenko
6

Le programme d'installation de Windows présente de nombreux avantages importants pour le déploiement en entreprise , dont certains que j'ai décrits ici: /server//a/274609/20599

Une grande partie de la lenteur d'une session Windows Installer est due à ses capacités de restauration . Tout d'abord, il crée un point de restauration avant l'installation ou la désinstallation (à condition que la restauration du système n'ait pas été désactivée). Ensuite, il sauvegardera tous les fichiers concernés lors de la désinstallation et de l'installation pour garantir que le système peut être restauré à son état d'origine en cas d'erreur.

Un autre facteur contributif est que tous les composants du MSI seront enregistrés dans le registre . Cela implique des frais généraux .

Pour les fichiers MSI compilés, un certain temps est également nécessaire pour extraire les fichiers d'installation .

Consultez cette réponse pour obtenir des détails techniques sur l'accélération des installations MSI .

Stein Åsmul
la source
3

Les programmes d'installation de Windows sont si couramment utilisés pour de nombreuses raisons - intégration du système d'exploitation, politiques de sécurité, installations sans assistance et bien plus encore.

La raison la plus courante à laquelle je peux penser est les installations sans assistance et les distributions de réseau. Les grandes entreprises peuvent facilement distribuer des applications, en ayant le fichier .MSI sur un lecteur réseau, puis en appelant simplement un fichier batch (ou une application d'assistant de distribution) sur une machine distante pour automatiser le processus d'installation.

Bien que d'autres options existent en dehors des fichiers .MSI, il existe des fonctionnalités uniques qui s'intègrent à la plupart des versions de Windows que de nombreux autres installateurs n'ont pas.

Et juste pour que vous le sachiez - InstallShield n'est pas toujours un frontal pour les fichiers MSI. Ils ont également leur propre solution d'installation propriétaire.

Percée
la source
1
La question était de savoir pourquoi MSI met tant de temps à faire quelque chose, par rapport aux programmes d'installation purs .exe.
grawity
5
De la question ... "et pourquoi les gens utilisent-ils toujours MSI pour l'installation?"
Percée le
@grawity: techniquement, les installateurs msi peuvent également être emballés dans des exes, mais c'est probablement en divisant les cheveux.
music2myear