setup-Tjek og find PRODUKTGUID for en installeret MSI setup

for helt at låse op for dette afsnit skal du logge ind

Produktkoden er den unikke GUID til at identificere en applikation eller produktudgivelse; med andre ord skal forskellige versioner og sprog af produktet have forskellige produktkoder.

Produktkode kan også bruges til at forespørge funktionstilstand og produkttilstand. For eksempel, installatør API “MSC()” og “MSC ()” osv.

følgende fire tilgange kan give os flere metoder til at finde og hente (også eksternt) GUID for installerede MSI-pakker:

brug Strømshell “one-liner”

enhver selvreparation udløst af denne mulighed skal generelt være mulig at annullere. Pakken integritet kontrol udløst gør tilføje nogle begivenhed log “støj” selv. Tag ikke det identifikationsnummer er Produktkoden.

get-wmiobject Win32_Product | Format-Table IdentifyingNumber, Name, LocalPackage -AutoSize

Hurtig start af Strømshell: hold vinduer-tasten nede, tryk på R, skriv “strømshell” og tryk på Enter.

brug VBScript

denne mulighed kan være sikrere end Strømshell af grunde, der er forklaret detaljeret nedenfor.

i det væsentlige er det (meget) hurtigere og ikke i stand til at udløse MSI-selvreparation, da det ikke går gennem MMI (det får adgang til MSI COM API direkte – ved blærehastighed). Det er dog mere involveret end indstillingen Magtshell (flere linjer kode).

du kan prøve et VBScript for at få adgang til oplysninger via MSI – automatiseringsgrænsefladen.

  • Kopier nedenstående script og indsæt i en *.VBS fil på skrivebordet, og forsøge at køre det ved at dobbeltklikke. Dit skrivebord skal være skrivbart for dig, eller du kan bruge enhver anden skrivbar placering.
  • dette er en prøve VBScript. Terseness er blevet foretrukket frem for fejlhåndtering og fuldstændighed, men det skal gøre jobbet med minimal kompleksitet.
  • outputfilen oprettes i den mappe, hvor du kører scriptet fra (mappen skal være skrivbar). Outputfilen hedder msiinfo.csv.
  • Dobbeltklik på filen for at åbne i et regnearksprogram, vælg komma som afgrænser ved import – eller – bare åbn filen i Notesblok eller en hvilken som helst tekstfremviser. Åbning i et regneark tillader avancerede sorteringsfunktioner.
  • dette script kan let tilpasses til at vise en betydelig mængde yderligere detaljer om MSI-installationen.
'#### Retrieve all ProductCodes (with ProductName and ProductVersion)Set fso = CreateObject("Scripting.FileSystemObject")Set output = fso.CreateTextFile("msiinfo.csv", True, True)Set installer = CreateObject("WindowsInstaller.Installer")On Error Resume Next ' we ignore all errorsFor Each product In installer.ProductsEx("", "", 7) productcode = product.ProductCode name = product.InstallProperty("ProductName") version=product.InstallProperty("VersionString") output.writeline (productcode & ", " & name & ", " & version)Nextoutput.Close

Registry Lookup

du kan også finde Produktkoden ved at Gennemgå registreringsdatabasen fra denne basisnøgle: HKEY_LOCAL_MACHINE\Microsoft\vinduer\CurrentVersion\Uninstall.

tryk på F3-tasten og søg efter dit produktnavn. Hvis det er et 32-bit installationsprogram på en 64-bit maskine, kan det være under følgende nøgle: HKEY_LOCAL_MACHINE\6432node\Microsoft\vinduer\CurrentVersion\Uninstall.

følgende registreringsdatabasenøgler er de almindelige placeringer, hvor du søger og finder GUID ‘ erne til MSI-pakker:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\UninstallHKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\UninstallHKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall

Original MSI-fil

du kan finde Produktkoden i egenskabstabellen for enhver MSI-fil (og enhver anden ejendom også). GUID ‘et kunne imidlertid tænkes (sjældent) tilsidesættes af en transformation, der blev anvendt på installationstidspunktet og dermed ikke matche GUID’ et, som produktet er registreret under (tilgang 1 og 2 ovenfor rapporterer den reelle Produktkode – der er registreret hos vinduer – i sådanne sjældne scenarier).

du har brug for et værktøj til at se MSI-filer. Se mod bunden af følgende Svar for en liste over gratis værktøjer, du kan hente (eller se hurtig mulighed nedenfor): Hvordan kan jeg sammenligne indholdet af to (eller flere) MSI-filer?

for nemheds skyld og behov for hastighed kan du hente SuperOrca uden forsinkelse og ståhej fra denne direkte Hent hotlink-værktøjet er godt nok til at få arbejdet gjort-installer, åbn MSI og gå direkte til Ejendomstabellen og find produktkoderækken (vær altid virustjek en direkte Hent hotlink-naturligvis – du kan bruge virustotal.com for at gøre det-online scanning ved hjælp af snesevis af antivirusprogrammer og programmer til at scanne, hvad du uploader).

en anden, den oprindelige, værktøj Orca er Microsofts eget værktøj, det er installeret med Visual Studio og vinduerne SDK. Prøv at søge efter Orca-86_en-us.msi, under programfiler (86) og Installer MSI ‘ en, hvis den findes.

Hent produktkoder

Tænd for Strømshell (hold nede vinduer-tasten, tryk på R, slip vinduer-tasten, skriv “strømshell” og tryk på OK) og kør kommandoen nedenfor for at få en liste over installerede MSI-pakkeproduktkoder sammen med den lokale cache-pakkesti og produktnavnet (Maksimer Strømshell-vinduet for at undgå afkortede navne).

før du kører denne kommandolinje, skal du læse ansvarsfraskrivelsen nedenfor (intet farligt, bare nogle potentielle gener). Hvis du forsøger at afinstallere en pakke, er der et afsnit nedenfor med nogle eksempler.kommandolinjer:

get-wmiobject Win32_Product | Format-Table IdentifyingNumber, Name, LocalPackage -AutoSize

udgangen skal svare til dette:

kontroller og find PRODUKTGUID for en installeret MSI-opsætning

af en eller anden mærkelig grund kaldes “ProductCode” “IdentifyingNumber” i MMI. Så med andre ord, i billedet ovenfor Identificeringennummer er Produktkoden.

på grund af mærkeligt Microsoft-design vil ethvert opkald til at vinde 32_produkt (som kommandoen nedenfor) udløse en validering af pakkeboet. Udover at være ret langsom, kan dette i sjældne tilfælde udløse en MSI-selvreparation. Dette kan være en lille pakke eller noget stort – som Visual Studio. I de fleste tilfælde sker dette ikke, men der er en risiko.

Kør ikke denne kommando lige før et vigtigt møde, det er aldrig farligt (det er en skrivebeskyttet forespørgsel), men det kan føre til en lang reparation i meget sjældne tilfælde.

du kan også få output i listeform (i stedet for tabel):

get-wmiobject -class Win32_Product

i dette tilfælde svarer udgangen til dette:

find PRODUKTGUID for en installeret MSI-opsætning

Hent produktkoder fra en fjerncomputer

i teorien skal du bare kunne angive et fjerncomputernavn som en del af selve kommandoen. Her er den samme kommando som ovenfor sat op til at køre på maskinen “RemoteMachine” (- ComputerName RemoteMachine sektion tilføjet):

get-wmiobject Win32_Product -ComputerName RemoteMachine | Format-Table IdentifyingNumber, Name, LocalPackage -AutoSize

dette fungerer muligvis, hvis du kører med domæneadministratorrettigheder på et ordentligt domæne. I et arbejdsgruppemiljø (lille kontor / hjemmenetværk) skal du sandsynligvis tilføje brugeroplysninger direkte til arbejdsprogrammet for at få det til at fungere.

derudover påvirkes fjernforbindelser i Microsoft af (i det mindste) vinduer, DCOM-indstillinger og Brugerkontokontrol (UAC) (plus eventuelle yderligere faktorer, der ikke er Microsoft, f.eks. yderligere fysiske eller virtuelle brandmure, tredjeparts brandmure, sikkerhedsprogrammer af forskellig art osv.). Om det fungerer eller ej, afhænger normalt af din nøjagtige opsætning.

Strømshell

Strømshell kræver, at.NET-rammen installeres, men på de fleste moderne operativsystemer (vinduer Server og vinduer platforme, Strømshell er allerede inkluderet og tilgængelig). Selve applikationen kan også mangle fra maskinen, selvom.net er installeret. Endelig kunne Strømshell deaktiveres eller låses af forskellige systempolitikker og privilegier.

Hvis dette er tilfældet, kan du prøve et par andre måder at hente produktkoder på. Et alternativ er VBScript – det er hurtigt og fleksibelt (men kan også låses på visse maskiner, og scripting er altid lidt mere involveret end at bruge værktøjer).

lad os starte med et indbygget værktøj, der normalt bruges til at teste komponenter og funktionaliteter.eks.

  • lancering af vbemtest.hold vinduet nede, tryk på R, slip vinduet, Skriv “vbemtest”.”og tryk på OK).
  • Klik på Opret forbindelse og derefter OK (navneområde er standard til root\cimv2), og klik på “Opret forbindelse” igen.
  • Klik på “forespørgsel” og indtast denne kommando: Vælg Identificeringnummer,navn,Version fra Vind32_produkt.
  • Klik på “brug” (eller tilsvarende – værktøjet vil blive lokaliseret).

sample output screenshot er følgende. Ikke den bedste formatering, men du kan få de data, du har brug for. IdentifyingNumber er MSI-Produktkoden:

se og find PRODUKTGUID for en installeret MSI setup

næste, du kan prøve et brugerdefineret, mere fuldt udstyret værktøj til MSI.eks.

  • dette er ikke inkluderet i vinduer. Det er dog et meget godt værktøj.
  • tjek det ud på: https://github.com/vinaypamnani/wmie2/releases.
  • start værktøjet, klik på Connect, dobbeltklik på ROOT\CIMV2
  • fra “Forespørgselsfanen”, skriv følgende forespørgsel vælg Identificeringnummer,navn,Version fra Vind32_produkt og tryk på Udfør.

Hent MSI-pakker GUID (sammenligning af Produktkode og Opgraderingskode)

start Strømshell: hold vinduerne og R-tasten nede, slip Vinduetasten, skriv “strømshell” og tryk på OK eller tryk på Enter.

Kopier scriptet nedenfor i sin helhed, og højreklik derefter bare inde i vinduet.

for Vind32_property filtrerer vi både rækker og kolonner (UpgradeCode er kun en af mange rækketyper). Vær forberedt på en langsom operation.

$wmipackages = Get-WmiObject -Class win32_product$wmiproperties = gwmi -Query "SELECT ProductCode,Value FROM Win32_Property WHERE Property='UpgradeCode'"$packageinfo = New-Object System.Data.Datatable$packageinfo.Columns.Add("Name")$packageinfo.Columns.Add("ProductCode")$packageinfo.Columns.Add("UpgradeCode")foreach ($package in $wmipackages) { $foundupgradecode = $false #Let's assume that no UpgradeCode is found yet. foreach ($property in $wmiproperties) { if ($package.IdentifyingNumber -eq $property.ProductCode) { $packageinfo.Rows.Add($package.Name,$package.IdentifyingNumber, $property.Value) $foundupgradecode = $true break } } if(-Not ($foundupgradecode)) { # No upgrade code found, add product code to list. $packageinfo.Rows.Add($package.Name,$package.IdentifyingNumber, "") }}$packageinfo | Format-table ProductCode, UpgradeCode, Name# Enable the following line to export to CSV (good for annotation). Set full path in quotes.# $packageinfo | Export-Csv "\MsiInfo.csv"

opgraderingskoden er den unikke GUID til at identificere en familie af et produkt. Det vil sige, at de samme produkter med forskellige versioner sandsynligvis er blevet sendt til et par udgivelser. Disse produkter har forskellige produktkoder, men de er knyttet sammen ved hjælp af samme UpgradeCode.

for eksempel, hvis vi antager, at vi skrev et produkt kaldet “Happy MSI”, og dette produkt kun har en MSI-Pakke til implementering på klientsystemet.

den første udgivelse af dette produkt er faktisk MSI-pakken med navnet “version_1.msi”, og den anden udgivelse er ” version_2.msi”. Derefter skal disse to MSI have samme UpgradeCode. Når brugerne kører ” version_2.msi ” på deres system bruger installationsprogrammet UpgradeCode til at afgøre, om tidligere versioner af dette produkt allerede findes på systemet.

Installer API “MsiEnumRelatedProducts()” bruger UpgradeCode til at forespørge alle familiens produkter.

Afinstaller MSI-pakker

hvis det, du vil gøre, er at afinstallere MSI-pakken, og du fandt Produktkoden (GUID) til, kan du gøre dette som følger ved hjælp af en forhøjet kommandoprompt (Søg efter cmd.køre som admin):

mulighed 1: Grundlæggende, interaktiv afinstallere uden at logge (hurtig og nem):

msiexec.exe /x {00000000-0000-0000-0000-00000000000C}

hurtig Parameter forklaring:

  • /
  • {00000000-0000-0000-0000-00000000000c} = Produktkode for produkt, der skal afinstalleres

du kan også aktivere (verbose) logning og køre i lydløs tilstand, hvis du vil, hvilket fører os til Mulighed 2:

Mulighed 2: lydløs afinstallation med verbose logning (bedre til batchfiler):

msiexec.exe /x {00000000-0000-0000-0000-00000000000C} /QN /L*V "C:\My.log" REBOOT=ReallySuppress

hurtig Parameter forklaring:

  • /
  • {00000000-0000-0000-0000-00000000000c} = produktkode for produkt at afinstallere
  • /kn = Kør helt lydløst
  • /L*V “C:\My.log ” = Verbose logning på den angivne sti
  • REBOOT=ReallySuppress = undgå uventet, pludselig genstart

Leave a Reply

Din e-mailadresse vil ikke blive publiceret.