Dove vengono archiviati i file MSI di Windows per la disinstallazione?


25

Sto cercando di capire come Windows (XP attraverso 7) gestisce l'installazione e la disinstallazione dei file MSI. Sono venuto in situazioni in cui Windows Installer non è in grado di disinstallare perché manca il file MSI originale, il che mi porta a credere che memorizza da qualche parte una copia di tutti i pacchetti MSI installati. Dove?

Ho avuto un paio di teorie.

  1. Si aspetta che risieda nella stessa cartella da cui è stato installato. Le chiavi del Registro di sistema HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstallindicano la cartella di installazione originale e i messaggi di errore quando manca il file MSI indicano spesso questo. La rimozione del file MSI da questa cartella non ostacola il processo di disinstallazione, quindi ho rifiutato questa teoria.

  2. C:\Windows\Installer. Questa cartella contiene in realtà un mucchio di file MSI apparentemente casuali. Ma questo elenco è incompleto. Trovo le voci nella chiave di registro menzionata in 1) che non ha una copia MSI in questa cartella.

Quindi come funziona? In che modo Windows Installer è in grado di disinstallare le applicazioni installate da MSI anche se MSI non è in 1) e non in 2)?


Windows non lo mantiene sempre. Esistono molti modi in cui l'utente può dire a Windows di cancellare effettivamente la cache di questi file. Se si dispone di software che non può essere disinstallato, significa che lo sviluppatore ha creato l'installatore errato. La posizione sarà diversa tra Windows XP (perché sei preoccupato per un sistema operativo non supportato) e Windows 7 e / o Windows 8.
Ramhound

Risposte:


44

Apparentemente funziona in questo modo (su Windows 7, non conosco XP e altri sistemi operativi):

Quando un utente installa alcune app, Windows procede come segue:

1) Crea una chiave di registro

HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ [ProductId GUID]

per questa app.

Se hai accesso al file msi originale del programma di installazione della tua app, puoi trovare [ProductID GUID] aprendo il file msi in orca.exe e facendo clic su "Proprietà" a sinistra in orca e cercando "ProductCode" linea a destra. Se non hai accesso al file * .msi originale, puoi semplicemente cercare la chiave di registro HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall per il nome dell'app.

Se desideri eliminare l'app (che rifiuta di disinstallare, ad esempio) dall'elenco delle app installate nel Pannello di controllo, puoi eliminare la voce da questa chiave di disinstallazione. Scomparirà sicuramente dall'elenco nel pannello di controllo, ma Windows lo ricorderà comunque. Ad esempio, se si tenta di installare una versione successiva della stessa app, il programma di installazione potrebbe continuare a disinstallare la versione precedente. Vedi l'articolo 2 per questo.

2) Windows copia il file * .msi originale nella cartella C: \ Windows \ Installer e lo rinomina con un nome casuale (mantiene l'estensione .msi). Windows crea anche una chiave nel registro in HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\[InternalUserId]\Products\[some random guid-like sequence of chars identifying to windows your installation]\InstallProperties.ValueName "LocalPackage" in questa chiave reg punterà al file msi rinominato. Per trovare il file in C: \ windows \ Installer puoi accedere a questa cartella in Esplora risorse di Windows, passare alla vista Dettagli, rendere visibile la colonna "Oggetto" e vedrai per tutti i nnnnnnnn.msi il nome corrispondente del prodotto.


6
Volevo votarti due volte per il segreto nascosto - make column "Subject" visible and you will see for all nnnnnnnn.msi fies their corresponding name of product.. Windows è un sistema operativo così misterioso: P
RBT

3) Il passaggio 3 è stato necessario per me. Ho dovuto copiare il file 5188bfc6.msi (hex # .msi) e rinominarlo con il nome file MyApp.msi originale, prima che il programma di disinstallazione accettasse il file. Dopo questa disinstallazione ha funzionato bene.
Joe B,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.