web-dev-qa-db-fra.com

Pourquoi les installateurs Windows (fichiers .msi) prends de plus de temps à désinstaller que les autres installateurs?

Depuis le Windows XP jours, les installateurs Windows (fichiers .msi), y compris les installateurs InstallShield (qui est juste un bootstrap pour MSI) a pris autour cinq fois Plus longtemps à désinstaller une application que d'autres installateurs. Il en va de même. généralement vrai sur l'installation.

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

Désinstaller VLC - prend environ 5 secondes.
[.____] désinstaller XYZ - lance "Se prépare à supprimer ..." suivi d'un délai de 15 secondes.

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

31
Chris S

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

De plus, de l'article intitulé, de manière appropriée, "Windows Installer SUCKS" , un extrait:

Il s'agissait d'une installation d'un programme exécutant et de prendre quelques étapes simples pour installer votre logiciel, puis faire l'inverse sur la désinstallation.

Ce n'est pas la façon dont Windows Installer fonctionne. Au lieu d'exécuter un programme pour simplement installer et de le faire, il examine l'état de votre système, puis examine l'état de la base de données qui est le programme d'installation du programme, puis une série de calculs surchargés sur la manière de réconcilier les deux.

Il semble que, au lieu d'exécuter un script d'installation, il convient de résoudre un problème de vendeur itinérant. C'est pourquoi il est si lent. Ou du moins, c'est mon impression.

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

32
harrymc

Windows Installer a en effet une réputation d'être lent. Il y a quelques points qui contribuent à cela et je vais les résoudre ci-dessous. Mais finalement, on devrait se demander si un, deux ou trois minutes est vraiment une question de contention lors de l'installation et de la désinstallation de logiciels. Je prends plus de temps que ça à travers des chaînes de télévision :)

le registre
[.____] Ceci est le numéro un des coupables. Windows Installer utilise une forte utilisation du registre pour ses opérations. Au fur et à mesure que votre système mûrit, lorsque vous installez et désinstallez des applications et que le registre se développe de taille ou devient fragmenté, MSI deviendra plus lentement. La même application installera et désinstallera beaucoup plus rapidement sur une installation imprenable Windows, que sur un système mûri. La solution ici est d'essayer de conserver le registre propre et défragmenté.

Pour le nettoyage du registre, utilisez l'un des nombreux outils disponibles. Mais pour la défragmentation du registre, je ne peux pas recommander suffisamment [~ # ~] Ntregopt [~ # ~] pour optimisation interne de la ruche et PagedefraG pour la défragmentation de fichiers physiques.

La raison pour laquelle les opérations MSI peuvent devenir lentes sur le registre concernent comment MSI l'utilise. Windows Installer utilise le registre pour garder une trace de laquelle les produits ont installé quels composants et à quel emplacement il a été installé. Les GUID d'origine d'origine sont utilisés au format compressé. Les informations par machine sur les installations peuvent être trouvées à HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18, tandis que les données par utilisateur se trouvent à côté d'elle sur un sous HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\ et sur une clé avec l'utilisateur SID.

Ces deux clés peuvent être assez importantes et contiennent de nombreuses sous-clés et valeurs. Ils contrôlent les produits, les composants et les claviers 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 du registre répertorie les clés de l'ordre alphabétique qui permet des recherches binaires. Mais les valeurs ne sont pas. Ils sont stockés comme ils sont créés, une procédure de recherche linéaire doit donc être effectuée. Qui ralentit les performances de l'algorithme.

Dans l'ensemble, MSI est une méthode assez complète et précise pour l'installation et la désinstallation du logiciel. Mais cela souffre de sa dépendance à l'enregistrement. Le système est excellent. C'est le registre Windows qui aurait dû avoir sa refonte il y a longtemps :)

Pour des informations plus avancées:
[.____] Pour une analyse approfondie de ce que MSI effectue pendant chaque procédure d'installation ou de désinstallation, voir cet article qui explique comment configurer MSI Débogou. Ou, pour des informations moins précieuses mais toujours précieuses, celui-ci comment activer la journalisation.

20
A Dwarf

Les installateurs Windows sont si couramment utilisés pour de nombreuses raisons - l'intégration du système d'exploitation, les stratégies de sécurité, les installations sans surveillance et bien plus encore.

La raison la plus courante que je puisse penser est les installations sans surveillance et les distributions de réseau. Les grandes entreprises peuvent facilement distribuer des applications, en disposant du fichier .msi sur un lecteur réseau, puis appelez simplement une application de batchfile (ou de l'assistant de distribution) sur une machine distante pour automatiser le processus d'installation.

Tandis que d'autres options existent en dehors des fichiers .msi, certains sont fonctionnalités uniques intégrant la plupart des versions de Windows que beaucoup d'autres installateurs n'ont pas.

Et juste pour que vous sachiez - InstallShield n'est pas toujours un front-end aux fichiers MSI. Ils ont également leur propre solution d'installation exclusive.

3
Breakthrough