Onde o Windows armazena arquivos MSI para desinstalação?

22

Estou tentando descobrir como o Windows (XP a 7) está lidando com a instalação e a desinstalação de arquivos MSI. Cheguei em situações em que o Windows Installer não consegue desinstalar porque está faltando o arquivo MSI original, o que me leva a acreditar que ele armazena uma cópia de todos os pacotes MSI instalados em algum lugar. Onde?

Eu tive algumas teorias.

  1. Espera que ele resida na mesma pasta da qual foi instalado. As chaves de registro em HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall apontam para a pasta de instalação original e as mensagens de erro quando o arquivo MSI está ausente geralmente apontam para isso. Removendo o arquivo MSI desta pasta não impede o processo de desinstalação, então eu recusei essa teoria.

  2. C:\Windows\Installer . Esta pasta contém um monte de arquivos MSI aparentemente aleatoriamente nomeados. Mas esta lista está incompleta. Eu encontro entradas na chave do registro mencionadas em 1) que não tem uma cópia MSI nesta pasta.

Então, como isso funciona? Como o Windows Installer é capaz de desinstalar aplicativos instalados pelo MSI, mesmo que o MSI não esteja em 1) e não em 2)?

    
por Nilzor 13.09.2012 / 10:45

1 resposta

37

Aparentemente, funciona assim (no Windows 7, eu não sei sobre o XP e outros sistemas operacionais):

Quando um usuário instala algum aplicativo, o Windows faz o seguinte:

1) Cria uma chave de registro

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

para este aplicativo.

Se você tiver acesso ao arquivo original msi do instalador do seu aplicativo, você pode encontrar [ProductID GUID] abrindo o arquivo msi em orca.exe e clicando em "Property" à esquerda em orca, e procurando por Linha "ProductCode" à direita. Se você não tiver acesso ao arquivo * .msi original, basta pesquisar a chave do Registro HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall para obter o nome do aplicativo.

Se você quiser excluir seu aplicativo (que se recusa a desinstalar, por exemplo) da lista de aplicativos instalados no Painel de Controle, você pode excluir a entrada dessa chave de desinstalação. Ele certamente desaparecerá da lista no painel de controle, mas o Windows ainda se lembrará disso. Por exemplo, se você tentar instalar uma próxima versão do mesmo aplicativo, o instalador ainda poderá insistir na desinstalação da versão anterior. Veja o item 2 para isso.

2) O Windows copia o arquivo * .msi original para a pasta C: \ Windows \ Installer e renomeia para um nome aleatório (mantém a extensão .msi). O Windows também cria uma chave no registro em HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\[InternalUserId]\Products\[some random guid-like sequence of chars identifying to windows your installation]\InstallProperties. ValueName "LocalPackage" nessa chave reg apontará para o arquivo msi renomeado. Para encontrar o arquivo em C: \ windows \ Installer você pode navegar para esta pasta no Windows Explorer, alterá-lo para a visualização Details, tornar a coluna "Subject" visível e você verá todos os nnnnnnnn.msi correspondentes ao nome do produto.

    
por 27.04.2013 / 00:28