c # - Få produktversion med opgraderingskode for et produkt installeret

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at hente produktversionen af ​​en installeret MSI ved hjælp af opgraderings kode.
Jeg forsøgte at bruge MsiGetProductInfo api, men det giver mig ikke resultatet.


Jeg kunne ikke finde ansøgningen under HKEY\_LOCAL\_MACHINE \ SOFTWARE \ MSFT \ Windows \ CurrentVersion \ Uninstall.


Men i stedet fandt jeg min ansøgning noget andet sted i registreringsdatabasen under Installer \ Products.


Jeg ved, at lignende spørgsmål har bben spurgt her:
  Få produktkode for installeret Msi


men har nogen en bedre måde at gøre det på.


Tak

Bedste reference


Jeg havde stort set det samme problem lige nu. Hvis du har opgraderings-kode GUID, kan du gøre dette:


WindowsInstaller.Installer installer =
   Activator.CreateInstance(/* left as an exercise for the reader */);
foreach (string productCode in installer.get\_RelatedProducts("your-upgradecode-guid")) {
   string productVersion = installer.get\_ProductInfo(productCode, "VersionString");
}


Problemet er, at der kunne være flere relaterede produkter, så hvordan håndterer du det, er op til dig.


EDIT: Hvis du installerer per bruger som standard eller ved en fejltagelse, kan du muligvis ikke få produktkoden med RelatedProducts, hvis du kører forespørgslen som en anden bruger end MSI blev installeret til ... selvom installationen var mere eller mindre offentlig.