Gdzie Windows przechowuje pliki MSI do deinstalacji?


25

Próbuję dowiedzieć się, w jaki sposób system Windows (XP do 7) obsługuje instalowanie i odinstalowywanie plików MSI. Pojawiłem się w sytuacjach, w których Instalator Windows nie może odinstalować, ponieważ brakuje mu oryginalnego pliku MSI, co prowadzi mnie do przekonania, że ​​gdzieś przechowuje kopię wszystkich zainstalowanych pakietów MSI. Gdzie?

Miałem kilka teorii.

  1. Oczekuje, że znajdzie się w tym samym folderze, z którego został zainstalowany. Klucze rejestru w HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstallnie wskazują oryginalny folder instalacyjny, a komunikaty o błędach, gdy brakuje pliku MSI, często wskazują na to. Usunięcie pliku MSI z tego folderu nie utrudnia jednak procesu odinstalowywania, więc odmówiłem przyjęcia tej teorii.

  2. C:\Windows\Installer. Ten folder zawiera kilka pozornie losowo nazwanych plików MSI. Ale ta lista jest niekompletna. Znajduję wpisy w kluczu rejestru wymienionym w 1), który nie ma kopii MSI w tym folderze.

Jak to działa? W jaki sposób instalator Windows może odinstalować aplikacje zainstalowane w MSI, mimo że MSI nie ma w 1) ani w 2)?


System Windows nie zawsze go utrzymuje. Istnieje wiele sposobów, aby użytkownik poinformował system Windows, aby wyczyścił pamięć podręczną tych plików. Jeśli masz oprogramowanie, którego nie można odinstalować, oznacza to, że programista źle zbudował instalator. Lokalizacja będzie inna w systemie Windows XP (dlaczego martwisz się o nieobsługiwany system operacyjny) oraz Windows 7 i / lub Windows 8.
Ramhound

Odpowiedzi:


44

Najwyraźniej działa w ten sposób (w systemie Windows 7 nie wiem o XP i innych systemach operacyjnych):

Gdy użytkownik instaluje jakąś aplikację, system Windows wykonuje następujące czynności:

1) Tworzy klucz rejestru

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

dla tej aplikacji.

Jeśli masz dostęp do oryginalnego pliku msi instalatora aplikacji, możesz znaleźć [Identyfikator GUID produktu], otwierając plik msi w orca.exe i klikając „Właściwość” po lewej stronie w orca i szukając „Kod produktu” linia po prawej stronie. Jeśli nie masz dostępu do oryginalnego pliku * .msi, możesz po prostu wyszukać klucz rejestru HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall w poszukiwaniu nazwy aplikacji.

Jeśli chcesz usunąć aplikację (która odmawia odinstalowania) na liście zainstalowanych aplikacji w Panelu sterowania, możesz usunąć wpis z tego klucza Odinstaluj. Z pewnością zniknie z listy w panelu sterowania, ale system Windows nadal go zapamięta. Na przykład, jeśli spróbujesz zainstalować następną wersję tej samej aplikacji, Instalator może nadal nalegać na odinstalowanie poprzedniej wersji. Zobacz na ten temat punkt 2.

2) Windows kopiuje oryginalny plik * .msi do folderu C: \ Windows \ Installer i zmienia nazwę na losową nazwę (zachowuje jednak rozszerzenie .msi). Windows tworzy również klucz w rejestrze w HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\[InternalUserId]\Products\[some random guid-like sequence of chars identifying to windows your installation]\InstallProperties.ValueName „LocalPackage” w tym kluczu reg wskaże plik msi o zmienionej nazwie. Aby znaleźć plik w C: \ windows \ Installer, możesz przejść do tego folderu w Eksploratorze Windows, przełączyć go do widoku szczegółów, uczynić kolumnę „Temat” widoczną, a dla wszystkich nnnnnnnn.msi zobaczysz odpowiadającą jej nazwę produktu.


6
Chciałem dwukrotnie zagłosować za ukrytym sekretem make column "Subject" visible and you will see for all nnnnnnnn.msi fies their corresponding name of product.. Windows to taki tajemniczy system operacyjny: P
RBT

3) Krok 3 był dla mnie konieczny. Musiałem skopiować plik 5188bfc6.msi (hex # .msi) i zmienić nazwę na oryginalną nazwę MyApp.msi, zanim deinstalator zaakceptuje plik. Po tym odinstalowaniu działało dobrze.
Joe B
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.