Windows Installer tiene fama de ser lento. Hay algunas cosas que contribuyen a esto y las abordaré a continuación. Pero, en última instancia, uno debería preguntarse si uno, dos o tres minutos son realmente una cuestión de controversia al instalar y desinstalar software. Tomo más tiempo que eso hojeando canales de TV :)
El registro
Este es el culpable número uno. Windows Installer hace un uso intensivo del registro para sus operaciones. A medida que su sistema madure, a medida que instale y desinstale aplicaciones y que el registro crezca o se fragmente, MSI se volverá más lento. La misma aplicación se instalará y desinstalará mucho más rápido en una instalación inmaculada de Windows que en un sistema maduro. La solución aquí es intentar mantener el registro limpio y desfragmentado.
Para la limpieza del registro, use una de las muchas herramientas disponibles. Pero para la desfragmentación del registro, no puedo recomendar suficiente NTREGOPT para la optimización interna de la colmena y PageDefrag para la desfragmentación de archivos físicos.
La razón por la cual las operaciones de MSI pueden volverse lentas en el registro tiene que ver con cómo MSI lo usa. Windows Installer utiliza el registro para realizar un seguimiento de qué Productos han instalado qué Componentes y en qué Ubicación se instaló. Los GUID de instalación originales se utilizan en formato comprimido. La información por máquina sobre las instalaciones se puede encontrar en HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18
, mientras que los datos por usuario se encuentran junto a él HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\
en una clave debajo y en una clave con el SID del usuario.
Ambas claves pueden ser bastante grandes y contienen numerosas subclaves y valores. Controlan los productos, componentes y KeyPaths de cada aplicación instalada. Toda esta información debe leerse y procesarse para un procedimiento de desinstalación correcto. Sin embargo, el formato de registro enumera las claves en orden alfabético, lo que permite búsquedas binarias. Pero los valores no son. Se almacenan a medida que se crean, por lo que se debe realizar un procedimiento de búsqueda lineal. Lo que ralentiza el rendimiento del algoritmo.
Con todo, MSI es un método bastante completo y preciso para la instalación y desinstalación de software. Pero sufre de su dependencia de registro. El sistema es excelente. Es el registro de Windows que debería haberse revisado hace mucho tiempo :)
Para obtener información más avanzada:
para un análisis profundo de lo que está haciendo MSI durante cada procedimiento de instalación o desinstalación, consulte este artículo que explica cómo configurar MSI Debug. O, para obtener menos pero aún información valiosa, esta es la forma de activar el registro.