¿Dónde almacena Windows los archivos MSI para la desinstalación?

25

Estoy tratando de descubrir cómo Windows (XP a través de 7) maneja la instalación y desinstalación de archivos MSI. He surgido en situaciones en las que Windows Installer no puede desinstalar porque le falta el archivo MSI original, lo que me lleva a creer que almacena una copia de todos los paquetes MSI instalados en algún lugar. ¿Dónde?

He tenido un par de teorías.

  1. Espera que resida en la misma carpeta desde la que se instaló. Las claves de registro en HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstallsí apuntan a la carpeta de instalación original, y los mensajes de error cuando falta el archivo MSI a menudo apuntan a esto. Sin embargo, eliminar el archivo MSI de esta carpeta no obstaculiza el proceso de desinstalación, por lo que he rechazado esta teoría.

  2. C:\Windows\Installer. Esta carpeta en realidad contiene un montón de archivos MSI aparentemente aleatorios. Pero esta lista está incompleta. Sí encuentro entradas en la clave de registro mencionada en 1) que no tiene una copia MSI en esta carpeta.

Entonces, ¿cómo funciona esto? ¿Cómo puede el instalador de Windows desinstalar aplicaciones instaladas por MSI aunque MSI no esté en 1) y no en 2)?

Nilzor
fuente
Windows no siempre lo mantiene. Hay muchas formas para que el usuario le diga a Windows que realmente borre su caché de estos archivos. Si tiene software que no se puede desinstalar, significa que el desarrollador construyó mal el instalador. La ubicación será diferente entre Windows XP (¿por qué le preocupa un sistema operativo no compatible?) Y Windows 7 y / o Windows 8.
Ramhound

Respuestas:

44

Aparentemente funciona así (en Windows 7, no sé sobre XP y otros sistemas operativos):

Cuando un usuario instala alguna aplicación, Windows hace lo siguiente:

1) Crea una clave de registro

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

para esta aplicación

Si tiene acceso al archivo msi original del instalador de su aplicación, puede encontrar [GUID de ID de producto] abriendo el archivo msi en orca.exe y haciendo clic en la "Propiedad" a la izquierda en orca, y buscando "ProductCode" línea a la derecha. Si no tiene acceso al archivo * .msi original, puede buscar el nombre de la aplicación en la clave de registro HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall.

Si desea eliminar su aplicación (que se niega a desinstalar, por ejemplo) de la lista de aplicaciones instaladas en el Panel de control, puede eliminar la entrada de esta clave Desinstalar. Seguramente desaparecerá de la lista en el panel de control, pero Windows aún lo recordará. Por ejemplo, si intenta instalar una próxima versión de la misma aplicación, el instalador aún puede insistir en desinstalar la versión anterior. Ver artículo 2 para eso.

2) Windows copia el archivo * .msi original en la carpeta C: \ Windows \ Installer y lo renombra con un nombre aleatorio (aunque mantiene la extensión .msi). Windows también crea una clave en el registro en HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\[InternalUserId]\Products\[some random guid-like sequence of chars identifying to windows your installation]\InstallProperties.ValueName "LocalPackage" en esta clave de registro apuntará al archivo msi renombrado. Para encontrar el archivo en C: \ windows \ Installer, puede navegar a esta carpeta en el explorador de Windows, cambiarlo a la vista Detalles, hacer que la columna "Asunto" sea visible y verá para todos los nnnnnnnn.msi su nombre correspondiente del producto.

farfareast
fuente
66
Quería votarte dos veces por el secreto oculto make column "Subject" visible and you will see for all nnnnnnnn.msi fies their corresponding name of product.. Windows es un sistema operativo tan misterioso: P
RBT
3) El paso 3 fue necesario para mí. Tuve que copiar el archivo 5188bfc6.msi (hexadecimal # .msi) y cambiarle el nombre por el nombre del archivo original MyApp.msi, antes de que el desinstalador acepte el archivo. Después de esta desinstalación funcionó bien.
Joe B