Domanda

ho installato alcune MSI con GUID (0733556C-37E8-4123-A801-D3E6C5151617). Il programma registrato nel Registro di sistema: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ ()

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

La mia domanda è: come utility MsiExec.exe conosce il nome e percorso del file che si desidera eseguire quando si rimuove i programmi? Dove nel Registro di queste informazioni si possono trovare?

È stato utile?

Soluzione

Windows tiene Windows Installer informazioni di configurazione nascosto e crittografata nel Registro di sistema. Non è consultabile con l'occhio umano come altre parti del Registro di sistema sono.

Per interrogare / modificare / cancellare queste informazioni, è necessario utilizzare le funzioni di MSI.
 ( Installer riferimento alle funzioni )

Per la vostra domanda particolare, provare la funzione MsiGetProductInfo .

Altri suggerimenti

Ecco un semplice programma di c # che utilizza MsiGetProductInfo, come dice William Leara, per ottenere la posizione attuale del programma di installazione nella cache sul 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); 
}

Si potrebbe provare, dalla riga di comando:

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

V'è un'utility gratuita da Tarma Software Research che ho trovato utile per questo. Ottenere da loro sito web .

Non tiratevi bisogno di alcun software. Questo è il lavoro in Windows 10 e credo che la sua valida per Windows 7 pure.

Se il codice prodotto è 0733556C-37E8-4123-A801-D3E6C5151617. Prova a trovare la chiave C65533708E7332148A103D6E5C516171 (in pratica è invertita) una volta che l'hai trovato, sfogliare per InstallProperties sottochiave, se esiste Indifferente, cercare di trovare altro risultato. Una volta trovato InstallProperties, aperto e trovare la chiave LocalPackage. E poi ci sono il percorso per la packeage msi che MSI salva come cache quando si è installato l'applicazione.

La premessa di questa domanda è fuorviante perché l'UninstallString nel Registro di sistema non viene utilizzato quando si fa la disinstallazione. Vai avanti e modificare la stringa per testare questo - non userà la stringa alterato.

Anche se i riferimenti a cose nel Registro di sistema potrebbe essere attraente, la risposta breve è che i dati di Windows Installer nel Registro di sistema è dettaglio di implementazione. La questione è fondamentalmente chiedendo come funziona MsiConfigureProduct (.... INSTALLSTATE_ABSENT ...), ed è inutile indovinare i dettagli di implementazione e dove potrebbe essere nel Registro di sistema. E 'API fino in fondo. Ci potrebbe essere stato un compito vero e proprio manifesto potrebbe aver voluto realizzare, ma è mascherato da una questione di come disinstallazioni funzionano.

Quella chiave mappato HKEY_CLASSES_ROOT\Installer\Products\.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top