Wo speichert Windows MSI-Dateien zur Deinstallation?

25

Ich versuche herauszufinden, wie Windows (XP bis 7) die Installation und Deinstallation von MSI-Dateien handhabt. Ich habe Situationen erlebt, in denen Windows Installer nicht deinstalliert werden kann, weil die ursprüngliche MSI-Datei fehlt, was mich zu der Annahme veranlasst, dass eine Kopie aller installierten MSI-Pakete irgendwo gespeichert wird. Woher?

Ich habe ein paar Theorien gehabt.

  1. Es wird erwartet, dass es sich in demselben Ordner befindet, aus dem es installiert wurde. Die Registrierungsschlüssel in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstallverweisen auf den ursprünglichen Installationsordner, und Fehlermeldungen, wenn die MSI-Datei fehlt, verweisen häufig darauf. Das Entfernen der MSI-Datei aus diesem Ordner behindert den Deinstallationsprozess jedoch nicht. Daher habe ich diese Theorie abgelehnt.

  2. C:\Windows\Installer. Dieser Ordner enthält tatsächlich eine Reihe von scheinbar zufällig benannten MSI-Dateien. Diese Liste ist jedoch unvollständig. Ich finde Einträge in dem in 1) genannten Registrierungsschlüssel, der keine MSI-Kopie in diesem Ordner enthält.

Wie funktioniert das? Wie kann Windows Installer MSI-installierte Anwendungen deinstallieren, obwohl MSI nicht in 1) und nicht in 2) enthalten ist?

Nilzor
quelle
Windows behält es nicht immer bei. Es gibt viele Möglichkeiten für den Benutzer, Windows anzuweisen, den Cache dieser Dateien tatsächlich zu leeren. Wenn Sie Software haben, die nicht deinstalliert werden kann, bedeutet dies, dass der Entwickler das Installationsprogramm falsch erstellt hat. Der Speicherort unterscheidet sich zwischen Windows XP (warum machen Sie sich Sorgen über ein nicht unterstütztes Betriebssystem) und Windows 7 und / oder Windows 8.
Ramhound

Antworten:

44

Anscheinend funktioniert es so (unter Windows 7 kenne ich XP und andere Betriebssysteme nicht):

Wenn ein Benutzer eine App installiert, führt Windows Folgendes aus:

1) Erstellt einen Registrierungsschlüssel

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

für diese App.

Wenn Sie Zugriff auf die ursprüngliche msi-Datei des Installationsprogramms Ihrer App haben, können Sie [ProductID GUID] finden, indem Sie die msi-Datei in orca.exe öffnen, auf die Eigenschaft links in orca klicken und nach "ProductCode" suchen. Linie rechts. Wenn Sie keinen Zugriff auf die ursprüngliche * .msi-Datei haben, können Sie einfach den Registrierungsschlüssel HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall nach dem Namen der App durchsuchen.

Wenn Sie Ihre App (die sich beispielsweise nicht deinstallieren lässt) aus der Liste der installierten Apps in der Systemsteuerung löschen möchten, können Sie den Eintrag aus diesem Deinstallationsschlüssel löschen. Es wird sicherlich aus der Liste in der Systemsteuerung verschwinden, aber Windows wird sich trotzdem daran erinnern. Wenn Sie beispielsweise versuchen, eine nächste Version derselben App zu installieren, besteht das Installationsprogramm möglicherweise weiterhin darauf, die vorherige Version zu deinstallieren. Siehe hierzu Punkt 2.

2) Windows kopiert die ursprüngliche * .msi-Datei in den Ordner C: \ Windows \ Installer und benennt sie in einen zufälligen Namen um (behält jedoch die .msi-Erweiterung bei). Windows erstellt auch einen Registrierungsschlüssel 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". Dieser Registrierungsschlüssel verweist auf die umbenannte MSI-Datei. Um die Datei in C: \ windows \ Installer zu finden, können Sie im Windows-Explorer zu diesem Ordner navigieren, in die Detailansicht wechseln, die Spalte "Betreff" sichtbar machen und für alle nnnnnnnn.msi-Dateien den entsprechenden Produktnamen anzeigen.

Fernost
quelle
6
Ich wollte dich zweimal für das verborgene Geheimnis abstimmen - make column "Subject" visible and you will see for all nnnnnnnn.msi fies their corresponding name of product.. Windows ist so ein mysteriöses Betriebssystem: P
RBT
3) Schritt 3 war für mich notwendig. Ich musste die 5188bfc6.msi-Datei (hex # .msi) kopieren und in den ursprünglichen Dateinamen MyApp.msi umbenennen, bevor das Deinstallationsprogramm die Datei akzeptierte. Nach dieser Deinstallation hat alles geklappt.
Joe B