Windows Installer ha infatti la reputazione di essere lento. Ci sono alcune cose che contribuiscono a questo e ho intenzione di affrontarle di seguito. Ma alla fine, ci si dovrebbe chiedere se uno, due o tre minuti sono davvero una questione controversa durante l'installazione e la disinstallazione del software. Prendo più tempo di quello sfogliando i canali TV :)
Il registro
Questo è il colpevole numero uno. Windows Installer fa un uso intensivo del registro per le sue operazioni. Man mano che il tuo sistema matura, mentre installi e disinstalli le applicazioni e mentre il registro aumenta di dimensioni o si frammenta, MSI diventerà più lento. La stessa applicazione verrà installata e disinstallata molto più velocemente su un'installazione Windows incontaminata, rispetto a un sistema maturato. La soluzione qui è cercare di mantenere pulito e deframmentato il registro.
Per la pulizia del registro, utilizzare uno dei tanti strumenti disponibili. Ma per la deframmentazione del registro non posso raccomandare abbastanza NTREGOPT per l'ottimizzazione interna dell'alveare e PageDefrag per la deframmentazione dei file fisici.
Il motivo per cui le operazioni MSI potrebbero rallentare il registro ha a che fare con il modo in cui MSI lo utilizza. Windows Installer utilizza il registro per tenere traccia di quali Prodotti hanno installato quali Componenti e in quale Posizione è stato installato. I GUID di installazione originali vengono utilizzati in formato compresso. Le informazioni per macchina relative alle installazioni sono disponibili all'indirizzo HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18
, mentre i dati per utente si trovano accanto ad esse su un under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\
e su una chiave con il SID dell'utente.
Entrambe queste chiavi possono essere piuttosto grandi e contengono numerose sottochiavi e valori. Controllano prodotti, componenti e KeyPath di ciascuna applicazione installata. Tutte queste informazioni devono essere lette ed elaborate per una corretta procedura di disinstallazione. Tuttavia, il formato del registro elenca le chiavi in ordine alfabetico che consente ricerche binarie. Ma i valori non lo sono. Sono memorizzati man mano che vengono creati, quindi è necessario eseguire una procedura di ricerca lineare. Ciò rallenta le prestazioni dell'algoritmo.
Tutto sommato, MSI è un metodo piuttosto completo e accurato per l'installazione e la disinstallazione del software. Ma soffre della sua dipendenza dal registro. Il sistema è eccellente È il registro di Windows che avrebbe dovuto essere revisionato molto tempo fa :)
Per informazioni più avanzate:
per un'analisi approfondita di ciò che MSI sta facendo durante ciascuna procedura di installazione o disinstallazione, fare riferimento a questo articolo che spiega come impostare MSI Debug. O, per meno ma comunque preziose informazioni, questo come attivare la registrazione.