Cómo encontrar la ubicación del programa en el registro, si sé MSI GUID?

He instalado algunos de MSI con el GUID (0733556C-37E8-4123-A801-D3E6C5151617).
El programa registrado en el registro:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ ()

Valor
UninstallString = MsiExec.exe /I (0733556C-37E8-4123-A801-D3E6C5151617)

Mi pregunta es: ¿cómo utilidad MsiExec.exe conoce el nombre y la ruta del archivo que desea ejecutar al quitar programas? Donde en el registro de esta información se puede encontrar?

Muy buenas respuestas ya, pero la forma más fácil para obtener información acerca de su producto instalado es, probablemente, mediante un simple comando de PowerShell
La lectura de este nuevo creo que no entendí tu pregunta. Supongo que la respuesta real a la pregunta es que toda la información acerca de los productos instalados se almacena en el registro en virtud de HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer. Esto es el Instalador de Windows base de datos y que nunca se debe tocar todos los valores aquí directamente. En lugar usted puede acceder a ellos a través de llamadas a la API Win32 (C++) o puedes usar automatización COM (más fácil).

OriginalEl autor Yuriy | 2010-08-13

7 Kommentare

  1. 13

    Windows mantiene la configuración de Windows Installer información ocultos y cifrados en el Registro. No es navegable con el ojo humano como en otras partes del Registro.

    Para consultar/modificar/eliminar esta información, usted necesitará utilizar MSI funciones.

    (Instalador De Referencia De La Función)

    Para su pregunta en particular, pruebe la función MsiGetProductInfo.

    Ocultos y cifrados – ¿de verdad?
    Consulte Tao del Instalador de Windows, Parte 2 de la Instalador de Windows Team Blog. Véase la Regla 21: Evitar el Uso de los Datos de Configuración Que no posee. Dice, «estos datos son gestionados por el Instalador y el acceso directo de los usuarios o las aplicaciones que se desanima; de hecho, algunos de los datos se codifican para hacer que sea muy difícil de manipular manualmente.»

    OriginalEl autor William Leara

  2. 8

    Aquí es un simple programa de c# que utiliza MsiGetProductInfo, como William Leara dice, para obtener la ubicación actual de la caché de instalador en el disco.

    class Program
    {
        static void Main(string[] args)
        {
            Int32 len = 512;
            System.Text.StringBuilder builder = new System.Text.StringBuilder(len);
            MsiGetProductInfo("{89C098E5-C108-49F9-9B1D-10503C6D8A05}", "LocalPackage", builder, ref len);
            Console.WriteLine(builder.ToString());
            Console.ReadLine();
        }
    
        [DllImport("msi.dll", CharSet = CharSet.Unicode)]
        static extern Int32 MsiGetProductInfo(string product, string property, [Out] StringBuilder valueBuf, ref Int32 len); 
    }
    
    Como se ve en el fragmento de código, la cadena property puede (y debe) omitir INSTALLPROPERTY_. También el caso de las letras de los asuntos, por ejemplo, para INSTALLPROPERTY_INSTALLLOCATION es InstallLocation (como similar a LocalPackage).

    OriginalEl autor Sue Maurizio

  3. 7

    Que usted puede probar, desde la línea de comandos:

    wmic product where "Name like '%your software here%'" get Name, Version, PackageCode
    
    Wow genial! pero mi cmq dice que es una consulta no es válida…

    OriginalEl autor chris

  4. 1

    Hay una utilidad gratuita de Tarma, el Software de la Investigación que he encontrado útil para esto. Obtener de su sitio web.

    OriginalEl autor JPaget

  5. 1

    Usted no necesita ningún software. Esto está trabajando en Windows 10 y creo que es válido para windows 7.

    Si el Código de Producto es 0733556C-37E8-4123-A801-D3E6C5151617.
    Trate de encontrar la llave de la C65533708E7332148A103D6E5C516171 (básicamente se trata de invertir) una vez que la has encontrado, para examinar la subclave InstallProperties, si no existe, intente encontrar otro resultado. Una vez que usted encuentra InstallProperties, abrir y encontrar el LocalPackage Clave. Y entonces usted tiene la ruta de acceso para la msi packeage que MSI guarda la Caché cuando se ha instalado la aplicación.

    OriginalEl autor Andres

  6. 1

    La premisa de esta pregunta es engañosa porque el UninstallString en el registro no se utiliza cuando se realiza la desinstalación. Seguir adelante y cambiar la cadena a de la prueba de esto – que no va a usar su alteración de la cadena.

    Aunque las referencias a la materia en el registro podría ser atractivo, la respuesta corta es que el Instalador de Windows de datos en el registro es un detalle de implementación. La pregunta es, básicamente cómo MsiConfigureProduct(….INSTALLSTATE_ABSENT…) funciona, y no tiene sentido para adivinar los detalles de la implementación y donde podría estar en el registro. Es la Api de todo el camino hacia abajo. Podría haber sido una tarea real el cartel puede tener quería llevar a cabo, pero es enmascarada por una cuestión de cómo se desinstala el trabajo.

    Totalmente de acuerdo – nunca es aceptable para el acceso de base de datos MSI detalles directamente, o incluso sólo para intentar descifrar lo que mucha gente parece estar haciendo con las cosas que encuentra en el registro.

    OriginalEl autor PhilDW

  7. 0

    Clave que se asigna a HKEY_CLASSES_ROOT\Installer\Products\.

    HKEY_CLASSES_ROOT\Installer\Productos\ no incluye la ruta de acceso a los programas instalados. Donde ca encuentro?
    No necesita la ruta de acceso de la aplicación que se ha instalado, lo que si se instaló 10 aplicaciones?, todo lo que necesita es la ruta de acceso al programa de desinstalación (o .msi módulo). Echa un vistazo @ la salida de «wmic lista de productos» en la línea de comandos.
    En realidad necesito para determinar la ubicación de la aplicación (unidad de disco) para la estimación de espacio disponible en el disco antes de instalar la revisión msp. Puedo determinar la ubicación de la aplicación instalada, si sé que sólo guid en HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{<guid>}?

    OriginalEl autor Alex K.

Kommentieren Sie den Artikel

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

Pruebas en línea