Question

J'ai installé une MSI avec GUID (0733556C-37E8-4123-A801-D3E6C5151617). Le programme enregistré dans le registre: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ ()

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

Ma question est: comment utilitaire MsiExec.exe connaît le nom et le chemin du fichier que vous voulez exécuter lorsque vous supprimez des programmes? Où dans le registre ces informations sont disponibles?

Était-ce utile?

La solution

Windows conserve les informations de configuration Windows Installer caché et crypté dans le Registre. Il n'est pas browseable avec l'œil humain que d'autres parties du registre sont.

Pour requête / modifier / supprimer ces informations, vous aurez besoin d'utiliser les fonctions MSI.
 ( Installer Fonction Référence )

Pour votre question particulière, essayez la fonction MsiGetProductInfo .

Autres conseils

Voici un programme simple C # qui utilise MsiGetProductInfo, comme le dit William Leara, pour obtenir l'emplacement réel du programme d'installation mis en cache sur le disque.

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

Vous pouvez essayer, à partir de la ligne de commande:

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

Il est un utilitaire gratuit de Tarma Software Research que j'ai trouvé utile pour cela. Recevez de leur site .

Vous ne pas besoin d'aucun logiciel. Cela fonctionne sous Windows 10 et je pense que sa validité pour Windows 7 ainsi.

Si votre code produit est 0733556C-37E8-4123-A801-D3E6C5151617. Essayez de trouver une fois vous l'avez trouvé, recherchez sous-clé InstallProperties, si la C65533708E7332148A103D6E5C516171 existe Indifférent Fume clé (fondamentalement, il est inversé), essayez de trouver un autre résultat. Une fois que vous avez trouvé InstallProperties, ouvert et de trouver la clé LocalPackage. Et puis vous avez le chemin du packeage msi que MSI enregistre en tant que cache lorsque vous avez installé votre application.

La prémisse de cette question est trompeuse parce que le UninstallString dans le registre n'est pas utilisé lorsque vous effectuez la désinstallation. Allez-y et changer la chaîne pour tester ce - il ne sera pas utiliser votre chaîne modifiée.

Bien que les références à des choses dans le registre pourrait être attrayante, la réponse courte est que les données Windows Installer dans le Registre est détail de mise en œuvre. La question demande essentiellement comment MsiConfigureProduct (.... INSTALLSTATE_ABSENT ...) fonctionne, et il est inutile de deviner les détails de mise en œuvre et où il pourrait être dans le registre. Il API est tout le chemin vers le bas. Il aurait pu être une tâche réelle l'affiche peut avoir voulu accomplir, mais il est masqué par une question de savoir comment fonctionnent désinstalle.

Cette clé cartes à HKEY_CLASSES_ROOT\Installer\Products\.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top