Frage

Ich habe einige MSI mit GUID (0733556C-37E8-4123-A801-D3E6C5151617) installiert. Das Programm in der Registrierung registriert: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ Currentversion \ Uninstall \ ()

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

Meine Frage ist: Wie Dienstprogramm MsiExec.exe den Namen und Pfad der Datei kennt Sie ausführen möchten, wenn Sie Programme entfernen? Wo in der Registrierung können diese Informationen gefunden werden?

War es hilfreich?

Lösung

Fenster hält Windows Installer-Konfigurationsinformationen versteckt und in der Registry verschlüsselt. Es ist nicht browseable mit dem menschlichen Auge als andere Teile des Registry sind.

Zur Abfrage / Ändern / Löschen Sie diese Informationen, die Sie benötigen MSI-Funktionen verwenden.
 ( Installer Funktionsreferenz )

Für Ihre spezielle Frage, versuchen Sie die Funktion MsiGetProductInfo .

Andere Tipps

Hier ist ein einfaches c # Programm, das MsiGetProductInfo verwendet, wie William Leara sagt, die tatsächliche Position des im Cache gespeicherten Installationsprogrammes auf der Festplatte zu erhalten.

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); 
}

Sie könnten versuchen, über die Befehlszeile:

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

Es ist ein kostenloses Dienstprogramm von Tarma Software Research, dass ich für diesen hilfreich. Holen Sie sich von ihrer Website .

Sie benötigen keine Software benötigen. Dies funktioniert in Windows 10 und ich denke das gilt für Windows 7 als auch.

Wenn Ihr Produktcode ist 0733556C-37E8-4123-A801-D3E6C5151617. Versuchen Sie, den Schlüssel C65533708E7332148A103D6E5C516171 zu finden (im Grunde ist es umgekehrt), wenn Sie es gefunden, suchen Sie nach InstallProperties Unterschlüsseln, wenn Paßt nicht vorhanden ist, versuchen anderes Ergebnis zu finden. Einmal gefunden Sie InstallProperties, öffnen und Localpackage Key finden. Und dann haben Sie den Pfad für die msi packeage dass MSI als Cache speichert, wenn Sie Ihre Anwendung installiert.

Die Prämisse dieser Frage ist irreführend, weil der UninstallString in der Registrierung nicht verwendet, wenn die Deinstallation zu tun. Gehen Sie weiter und ändern Sie die Zeichenfolge dies zu testen - es wird nicht Ihre geänderten Zeichenfolge verwenden.

Obwohl Verweise auf Sachen in der Registrierung könnte attraktiv sein, die kurze Antwort ist, dass Windows Installer-Daten in der Registry Implementierung Detail. Die Frage ist im Grunde der Frage, wie MsiConfigureProduct (.... INSTALLSTATE_ABSENT ...) funktioniert, und es ist sinnlos, auf den Details der Implementierung zu erraten, und wo es in der Registrierung sein könnte. Es ist APIs den ganzen Weg hinunter. Es könnte eine tatsächliche Aufgabe gewesen, das Plakat erreichen wollte, aber es wird durch eine Frage von maskiert, wie Deinstallationen arbeitet.

Dieser Schlüssel abbildet HKEY_CLASSES_ROOT\Installer\Products\.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top