Encontrar GUID De Archivo MSI

¿Cómo puedo mostrar el GUID de un programa instalado en Windows? Por otra parte, es más fácil encontrar el GUID si tengo el archivo MSI?

Estoy mirando a través del archivo MSI con Orca pero no sabe dónde mirar para encontrar el GUID.

Gracias!

Tendrás que ser más específico. Qué GUID estás buscando? Un típico producto va a tener muchos, muchos Guid para una amplia variedad de propósitos.
Añadido una nueva respuesta de abajo para una lista de algunas de las opciones más sencillas para recuperar este GUID de cualquier sistema.
Cuatro enfoques principales para la búsqueda de MSI código del producto para productos instalados.

OriginalEl autor dshipper | 2012-06-28

5 Kommentare

  1. 10

    Los tres principales Guid de un Instalador de Windows base de datos son los Código De Paquete, ProductCode, y UpgradeCode. La primera es almacenada en la secuencia de información de resumen (Ver menú en Orca), y los otros se almacenan en la tabla de propiedades. (Otras formas de bases de datos tales como módulos de combinación y parches similares Guid en lugares similares, tales como el módulo de combinación del GUID o el código de parche GUID – cada almacenados de forma idéntica a la del código de paquete.)

    A encontrar en una máquina, se puede mirar en la clave de Desinstalación, donde el Código de producto se utiliza a menudo. O mejor aún, si usted está buscando para enumerar lo que está actualmente instalado en la máquina, usted puede llamar a MsiEnumProducts.

    OriginalEl autor

  2. 6

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

    Los más comunes son:

    1. De verificación en el registro debajo de la base de los siguientes rutas de acceso mediante regedit.exe. Búsqueda por el nombre de la aplicación (o simplemente navegar a través de cada una de las sub carpetas hasta que encuentres). Cuando se haya encontrado 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. Comprobar el nivel local caché paquete MSI en %SystemRoot%\Installer. Esta es una versión en caché de la MSI original que se utilizó originalmente para instalar el producto en su ordenador.
      • Se necesita una herramienta capaz de abrir los archivos MSI. Aquí está una lista y comparación de características: Lo de la instalación de producto a utilizar? InstallShield, WiX, Sabio, Advanced Installer, etc.
      • Una MSI es una base de datos MS SQL en el disfraz, también debe ser capaz de abrir con cualquier visor de datos MS SQL herramienta.
      • La libre MSI herramienta «Orca« de la Windows SDK es el preferido para realizar esta sencilla tarea de recuperación de datos. Es rápido, pequeño y fiable.
      • A continuación, siga Michael Uhrman del consejo de su respuesta anterior, y busque el paquete de código en el resumen de la secuencia, y la actualización y el código de producto en la tabla de propiedades. El paquete de código, también es visible desde un archivo MSI de la propiedad de la página en el Explorador de Windows.
    2. Uso Powershell a la lista de información del paquete. Esto me parece la forma más sencilla y práctica opción. Ver esta respuesta para una captura de pantalla y una muestra: ¿Cómo puedo encontrar el producto GUID de un instalados instalación MSI?

    Si lo que usted está tratando de hacer es desinstalar el producto en cuestión, ver este completo desinstalar MSI respuesta: La desinstalación de un archivo MSI de la línea de comandos sin utilizar msiexec

    Si usted se siente más cómodo usando VBScript en lugar de Powershell, por favor intente de esta respuesta de Phil Wilson: cómo averiguar qué productos están instalados – nuevo producto que ya están instalados MSI de windows

    OriginalEl autor

  3. 1

    Normalmente (aunque no universalmente) si una pieza de software que utiliza la instalación MSI de la GUID se puede encontrar en la entrada de Desinstalación. Ella suele ser el nombre de la tecla aparecerá en la UninstallString y/o UninstallPath valor. A veces la vida es fácil y hay un ProductGuid valor.

    Entradas de desinstalación se puede encontrar aquí:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
    

    En una versión de 64 bits de Windows hay dos claves, 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
    

    OriginalEl autor

  4. 1

    Mi solución es que escribí una pequeña aplicación de consola, la cual devuelve el Código de producto de cualquier archivo MSI (el nombre se pasa como argumentos del programa). Yo estoy haciendo la lectura de el guid .archivo msi en sí. Básicamente estoy de apertura que msi archivo como una cadena y buscando un texto que comience con «ProductCode», consiguiendo que su índice, y tomar, de 38 caracteres antes de que la posición de índice.
    Aquí está la captura de pantalla: Encontrar GUID De Archivo MSI

    OriginalEl autor

  5. 1

    si usted simplemente desea saber qué Producto y Código de producto (Idproducto) MSI contiene, sin necesidad de instalación de MSI y comprobar el registro, usted puede consultar la MSI sí mismo con PowerShell con una función como esta (inspirado por http://www.scconfigmgr.com/2014/08/22/how-to-get-msi-file-information-with-powershell):

    function Get-MSIProperties {
      param (
        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [System.IO.FileInfo] $path,
    
        [string[]] $properties = @('ProductCode', 'ProductVersion', 'ProductName', 'Manufacturer', 'ProductLanguage')
      )
      begin {
        $windowsInstaller = (New-Object -ComObject WindowsInstaller.Installer)
      }
      process {
        $table = @{}
        $msi = $windowsInstaller.GetType().InvokeMember('OpenDatabase', 'InvokeMethod', $null, $windowsInstaller, @($Path.FullName, 0))
        foreach ($property in $properties) {
          try {
            $view = $msi.GetType().InvokeMember('OpenView', 'InvokeMethod', $null, $msi, ("SELECT Value FROM Property WHERE Property = '$($property)'"))
            $view.GetType().InvokeMember('Execute', 'InvokeMethod', $null, $view, $null)
            $record = $view.GetType().InvokeMember('Fetch', 'InvokeMethod', $null, $view, $null)
            $table.add($property, $record.GetType().InvokeMember('StringData', 'GetProperty', $null, $record, 1))
          }
          catch {
            $table.add($property, $null)
          }
        }
        $msi.GetType().InvokeMember('Commit', 'InvokeMethod', $null, $msi, $null)
        $view.GetType().InvokeMember('Close', 'InvokeMethod', $null, $view, $null)
        $msi = $null
        $view = $null
        return $table
      }
      end {
        [System.Runtime.Interopservices.Marshal]::ReleaseComObject($windowsInstaller) | Out-Null
        [System.GC]::Collect()
      }
    }
    la adición de ‘UpgradeCode’ a $propiedades ha sido útil para … pero no puede encontrar lo que la propiedad es para el Paquete de Código !?

    OriginalEl autor

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Recent Articles

Python «set» con duplicados/elementos repetidos

Hay una forma estándar de representar un "conjunto" que puede contener elementos duplicados. Como yo lo entiendo, un conjunto tiene exactamente un cero o...

Python: generador de expresión vs rendimiento

En Python, ¿hay alguna diferencia entre la creación de un generador de objetos a través de un generador de expresión versus el uso de...

Cómo exportar/importar la Masilla lista de sesiones?

Hay una manera de hacer esto? O tengo que tomar manualmente cada archivo de Registro? InformationsquelleAutor s.webbandit | 2012-10-23

no distingue mayúsculas de minúsculas coincidentes en xpath?

Por ejemplo, para el xml a continuación <CATALOG> <CD title="Empire Burlesque"/> <CD title="empire burlesque"/> <CD...