2012-06-28 31 views
9

¿Cómo puedo enumerar el GUID de un programa instalado en Windows? Alternativamente, ¿es más fácil encontrar el GUID si tengo el archivo MSI?Encontrar GUID del archivo MSI

Estoy buscando en el archivo MSI con Orca, pero no estoy seguro de dónde buscar para encontrar el GUID.

Gracias!

+1

Necesitará ser más específico. ¿Qué GUID estás buscando? Un producto típico tendrá muchos, muchos GUID para una gran variedad de propósitos. –

+0

Se ha agregado una nueva respuesta a continuación para enumerar algunas de las opciones más simples para recuperar este GUID desde cualquier sistema. –

Respuesta

10

Los tres principales GUID de una base de datos de Windows Installer son Package Code, ProductCode y UpgradeCode. El primero se almacena en el flujo de información de resumen (menú Ver en Orca) y los otros se almacenan en la tabla de Propiedades. (Otras formas de bases de datos como combinación de módulos y parches tienen GUID similares en lugares similares, como el GUID del módulo de combinación o el GUID del código de parche, cada uno almacenado de forma idéntica al código del paquete.)

Para encontrarlos en una máquina, puede buscar en la clave Desinstalar, donde se utiliza a menudo el Código del producto. O mejor aún, si está buscando enumerar lo que está instalado actualmente en la máquina, puede llamar al MsiEnumProducts.

1

Normalmente (aunque no universalmente) si un software usa instalación basada en MSI, el GUID se puede encontrar en la entrada Desinstalar. Por lo general, será el nombre de la clave o aparecerá en el valor UninstallString y/o UninstallPath. A veces la vida es fácil y hay un valor de ProductGuid.

entradas de desinstalación se pueden encontrar aquí:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 

En una versión de 64 bits de Windows hay dos de estas llaves, una para el software de 64 bits y un segundo para el software de 32 bits:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall 
4

Hay varias maneras de localizar el producto GUID para paquetes instalados. Por favor, prefiera la opción número 3.

Los más comunes son:

  1. Comprobar en el registro debajo de las siguientes rutas de base mediante regedit.exe. Busque el nombre de la aplicación (o simplemente navegue por cada subcarpeta hasta que la encuentre). Cuando haya encontrado que se puede pasar a MSIEXEC.EXE:
- 32-BIT SECTION: 

HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall 
HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall (per user section) 
- 64-BIT SECTION: 

HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall 
- MERGED SECTION (supposedly all of the above merged together, I have not verified): 

HKCR\Installer\Products 
  1. Compruebe el nivel local en caché paquete MSI en % SystemRoot % \ Installer. Esta es una versión en caché del MSI original que se utilizó originalmente para instalar el producto en su computadora.
    • Necesitará una herramienta capaz de abrir archivos MSI. Aquí hay una lista y comparación de características: What installation product to use? InstallShield, WiX, Wise, Advanced Installer, etc.
    • Una MSI es una base de datos MS SQL disfrazada, también debería ser capaz de abrirla con cualquier herramienta de visor de datos MS SQL compatible.
    • La herramienta gratis MSI "Orca" Orca " del Windows SDK es la preferida para esta sencilla tarea de recuperación de datos. Es rápido, pequeño y confiable.
    • Luego siga los consejos de Michael Uhrman de su respuesta anterior, y ubique el código del paquete en la secuencia de resumen, y la actualización y el código del producto en la tabla Propiedad. El código del paquete también es visible desde la página de propiedades de un archivo MSI en Windows Explorer.
  2. Use Powershell para mostrar la información del paquete. Encuentro esta es la opción más fácil y práctica. Ver esta respuesta para una captura de pantalla y una muestra: How can I find the product GUID of an installed MSI setup?

Si lo que estamos tratando de hacer es desinstalar el producto en cuestión, ver esto desinstalación comprehesive MSI respuesta: Uninstalling an MSI file from the command line without using msiexec

Si se siente más cómodo usando VBScript en lugar de Powershell, intente con esta respuesta de Phil Wilson: how to find out which products are installed - newer product are already installed MSI windows

-1

Mi solución es que escribí una pequeña consola ap p que devuelve ProductCode de cualquier archivo MSI (el nombre se pasa como argumento del programa). Lo hago leyendo el guid del archivo .msi en sí. Básicamente, estoy abriendo ese archivo msi como una cadena y buscando un texto que comience con "ProductCode", obteniendo su índice y tomando 38 caracteres antes de esa posición de índice. Aquí está la captura de pantalla: screenshot

Cuestiones relacionadas