Pregunta

Me han instalado algunos MSI con GUID (0733556C-37E8-4123-A801-D3E6C5151617). El programa inscrito 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 cuando se quita programas? Cuando en el registro de esta información se puede encontrar?

¿Fue útil?

Solución

Windows mantiene la información de configuración de Windows Installer oculta y encriptada en el Registro. No es browseable con el ojo humano como otras partes del registro son.

Para consultar / modificar / borrar esta información, tendrá que utilizar las funciones de MSI.
 ( instalador de Referencia de funciones )

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

Otros consejos

Aquí hay un simple programa de c # que utiliza MsiGetProductInfo como dice William Leara, para obtener la ubicación actual del instalador en caché 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); 
}

Usted podría intentar, desde la línea de comandos:

wmic product where "Name like '%your software here%'" get Name, Version, PackageCode

Hay una utilidad libre de Tarma Investigación de Software que he encontrado útiles para esto. Se puede obtener del su página web .

¿Aún no necesita ningún software. Esto está trabajando en Windows 10 y creo que es válida para Windows 7 también.

Si su código de producto es 0733556C-37E8-4123-A801-D3E6C5151617. Tratar de encontrar la clave C65533708E7332148A103D6E5C516171 (básicamente es al revés) una vez que lo encontramos, Navegar por InstallProperties subclave, si existe Indiferente, tratar de encontrar otro resultado. Una vez que has encontrado InstallProperties, abierta y encontrar la llave LocalPackage. Y entonces usted tiene el camino para la packeage MSI MSI que guarda como caché cuando se ha instalado la aplicación.

La premisa de esta pregunta es engañoso porque el UninstallString en el registro no se utiliza cuando se hace la desinstalación. Seguir adelante y cambiar la cadena de probar esto - no va a usar su cadena alterada.

A pesar de que las referencias a las cosas en el registro podría ser atractivo, la respuesta corta es que los datos de Windows Installer en el registro es detalle de implementación. La pregunta es, básicamente, preguntando cómo funciona MsiConfigureProduct (.... INSTALLSTATE_ABSENT ...), y no tiene sentido que adivinar los detalles de implementación y dónde podría estar en el registro. API Es todo el camino hacia abajo. Podría haber sido una tarea real el cartel puede haber querido llevar a cabo, pero está enmascarado por una cuestión de cómo funcionan las desinstalaciones.

Esa llave se asigna a HKEY_CLASSES_ROOT\Installer\Products\.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top