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.
Oczekuje, że znajdzie się w tym samym folderze, z którego został zainstalowany. Klucze rejestru w
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
nie 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.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)?
źródło
Odpowiedzi:
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
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.źródło
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