Powershell-ellenőrizze és keresse meg a telepített MSI setup termék GUID-ját

a szakasz teljes feloldásához be kell jelentkeznie

a Termékkód az alkalmazás vagy termékkiadás azonosításának egyedi GUID-je; más szóval a termék különböző verzióinak és nyelveinek különböző termékkódokkal kell rendelkezniük.

a ProductCode használható a funkcióállapot és a termékállapot lekérdezésére is. Például a telepítő API “MsiQueryFeatureStateEx()” és “MsiQueryProductState ()” stb.

a következő négy megközelítés számos módszert kínál a telepített MSI csomagok GUID-jének megkeresésére és lekérésére (távolról is):

használja a Powershell “one-liner”

az ezen opció által kiváltott önjavítást általában meg lehet szakítani. A kiváltott csomag integritási ellenőrzések azonban hozzáadnak néhány eseménynaplót” zaj”. Ne vegye figyelembe, hogy az IdentifyingNumber a ProductCode (WMI sajátosság).

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

a Powershell gyors indítása: tartsa lenyomva a Windows billentyűt, érintse meg az R gombot, írja be a “powershell” parancsot, majd nyomja meg az Enter billentyűt.

használat VBScript

ez az opció biztonságosabb lehet, mint a Powershell az alábbiakban részletesen ismertetett okok miatt.

lényegében (sokkal) gyorsabb, és nem képes kiváltani az MSI önjavítást, mivel nem megy keresztül a WMI – n (közvetlenül hozzáfér az MSI COM API-hoz-hólyagosodási sebességgel). Ez azonban jobban érintett, mint a Powershell opció (több sornyi kód).

kipróbálhat egy VBScript-et az információk eléréséhez az MSI automation interfészen keresztül (a Windows alapvető jellemzője – ez nem kapcsolódik a WMI-hez).

  • másolja az alábbi szkriptet, majd illessze be a * – ba.vbs fájlt az asztalon, és próbálja meg futtatni dupla kattintással. Az asztalnak írhatónak kell lennie az Ön számára, vagy bármilyen más írható helyet használhat.
  • ez egy minta VBScript. A tömörséget előnyben részesítették a hibakezeléssel és a teljességgel szemben, de a munkát minimális bonyolultsággal kell elvégeznie.
  • a kimeneti fájl abban a mappában jön létre, ahonnan a parancsfájlt futtatja (a mappának írhatónak kell lennie). A kimeneti fájl neve msiinfo.csv.
  • kattintson duplán a fájlra a táblázatkezelő alkalmazásban való megnyitáshoz, válassza a vesszőt elválasztóként az importáláskor – vagy – csak nyissa meg a fájlt a Jegyzettömbben vagy bármely szövegmegjelenítőben. A táblázatban történő megnyitás lehetővé teszi a speciális rendezési funkciókat.
  • ez a szkript könnyen adaptálható, hogy jelentős mennyiségű további részletet jelenítsen meg az MSI telepítéséről.

'#### 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

a termékkódot a rendszerleíró adatbázis ezen alapkulcsból történő áttekintésével is megtalálhatja: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall.

nyomja meg az F3 billentyűt, és keresse meg a termék nevét. Ha ez egy 32 bites telepítő egy 64 bites gépen, akkor a következő kulcs alatt lehet: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall.

a következő rendszerleíró kulcsok azok a gyakori helyek, ahol az MSI-csomagok GUID-jeit keresik:

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

eredeti MSI fájl

a Termékkód bármely MSI fájl (és bármely más tulajdonság) Tulajdonságtáblájában megtalálható. A GUID azonban elképzelhető (ritkán) felülírható a telepítéskor alkalmazott átalakítással, és ezért nem egyezik meg azzal a GUID – val, amely alatt a termék regisztrálva van (a fenti 1.és 2. megközelítés a valódi termékkódot jelenti – amelyet a Windows regisztrált-ilyen ritka esetekben).

szüksége van egy eszközre Az MSI fájlok megtekintéséhez. Lásd a következő válasz alján a letölthető ingyenes eszközök listáját (vagy lásd az alábbi gyors opciót): hogyan lehet összehasonlítani két (vagy több) MSI fájl tartalmát?

a kényelem és a need For speed, Tudod letölt SuperOrca késedelem nélkül és felhajtás ebből a közvetlen-letöltés hotlink – az eszköz elég jó ahhoz, hogy a munkát – telepítse, nyissa meg az MSI és egyenesen az ingatlan táblázatot, és keresse meg a ProductCode sor (kérjük, mindig vírus ellenőrizze a közvetlen-letöltés hotlink – nyilvánvalóan – használhatja A virustotal.com ehhez-online scan felhasználásával több tucat anti-vírus és malware lakosztály, hogy átvizsgálja, amit feltölteni).

egy másik, az eredeti, eszköz Orca a Microsoft saját eszköze, telepítve van a Visual Studio és a Windows SDK. Próbálja meg keresni Orca-x86_en-us.MSI, a Program Files (x86) alatt, és telepítse az MSI-t, ha megtalálható.

termékkódok lekérése

indítsa el a Powershell-t (tartsa lenyomva a Windows billentyűt, érintse meg az R gombot, engedje fel a Windows billentyűt, írja be a “powershell” szót, majd nyomja meg az OK gombot), és futtassa az alábbi parancsot a telepített MSI-csomag termékkódjainak listájához, a helyi gyorsítótár-csomag elérési útjával és a termék nevével együtt (maximalizálja a PowerShell ablakot a csonka nevek elkerülése érdekében).

mielőtt futtatná ezt a parancssort, kérjük, olvassa el az alábbi nyilatkozatot (semmi veszélyes, csak néhány lehetséges kellemetlenség). Ha egy csomagot próbál eltávolítani, az alábbiakban található egy szakasz, amely néhány msiexec mintát tartalmaz.exe parancssorok:

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

a kimenetnek ehhez hasonlónak kell lennie:

Powershell-ellenőrizze és keresse meg a telepített MSI-setup termék GUID-jét

valami furcsa okból a “ProductCode” – ot “IdentifyingNumber” – nek nevezik a WMI-ben. Tehát más szóval, a fenti képen az Azonosítóa szám a Termékkód.

a Microsoft furcsa kialakítása miatt a Win32_Product WMI-hívása (mint például az alábbi PowerShell parancs) a csomag birtokának érvényesítését indítja el. Amellett, hogy meglehetősen lassú, ez ritka esetekben kiválthatja az MSI önjavítását. Ez lehet egy kis csomag vagy valami hatalmas – például a Visual Studio. A legtöbb esetben ez nem történik meg, de fennáll a veszélye.

ne futtassa ezt a parancsot közvetlenül egy fontos találkozó előtt, soha nem veszélyes (csak olvasható lekérdezés), de nagyon ritka esetekben hosszú javításhoz vezethet.

a kimenetet lista formában is megkaphatja (táblázat helyett):

get-wmiobject -class Win32_Product

ebben az esetben a kimenet hasonló ehhez:

Powershell-ellenőrizze és keresse meg a telepített MSI setup termék GUID-jét

termékkódok letöltése távoli számítógépről

elméletileg csak a parancs részeként kell megadnia a távoli számítógép nevét. Itt ugyanaz a parancs, mint fent beállított futtatni a gépen ” RemoteMachine “(- ComputerName RemoteMachine szakasz hozzá):

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

ez akkor működhet, ha megfelelő tartományon fut a tartomány adminisztrátori jogaival. Munkacsoport-környezetben (kis irodai / otthoni hálózat) valószínűleg közvetlenül hozzá kell adnia a felhasználói hitelesítő adatokat a WMI-hívásokhoz, hogy működjön.

ezenkívül a WMI távoli kapcsolatait (legalább) a Windows tűzfal, a DCOM beállításai és a Felhasználói fiókok felügyelete (UAC) befolyásolja (plusz minden további, nem microsoftos tényező, például további fizikai vagy virtuális tűzfalak, harmadik féltől származó szoftver tűzfalak, különféle biztonsági szoftverek stb.). Az, hogy működni fog-e vagy sem, általában a pontos beállítástól függ.

Powershell

a PowerShell a.NET-keretrendszer telepítését igényli, de a legtöbb modern operációs rendszeren (Windows Server és Windows platformokon a Powershell már szerepel és elérhető). Maga a tényleges PowerShell alkalmazás is hiányozhat a gépről, még akkor is, ha a.net telepítve van. Végül a PowerShell-t különféle rendszerszabályok és jogosultságok letilthatják vagy zárolhatják.

ebben az esetben kipróbálhat néhány más módszert a termékkódok lekérésére. Alternatív megoldás a VBScript – gyors és rugalmas (de bizonyos gépeken is zárolható, és a szkriptelés mindig egy kicsit jobban részt vesz, mint az eszközök használata).

kezdjük egy beépített Windows WMI eszközzel, amelyet általában a WMI komponensek és funkciók tesztelésére használnak: wbemtest.exe.

  • indítsa el a wbemtest programot.exe (tartsa lenyomva a Windows billentyűt, érintse meg az R gombot, engedje el a Windows billentyűt, írja be a “wbemtest.exe”, majd nyomja meg az OK gombot).
  • kattintson a csatlakozás, majd az OK gombra (a névtér alapértelmezés szerint root\cimv2), majd kattintson ismét a “Csatlakozás” gombra.
  • kattintson a “Query” gombra,és írja be ezt a WQL parancsot (SQL íz): válassza az IdentifyingNumber,Name, Version lehetőséget a Win32_Product-ból.
  • kattintson a “használat” (vagy azzal egyenértékű – az eszköz lokalizálódik).

Minta kimeneti képernyőkép a következő. Nem a legszebb formázás, de megkaphatja a szükséges adatokat. Az azonosítószám az MSI Termékkód:

Powershell-ellenőrizze és keresse meg a telepített MSI setup termék GUID-jét

ezután kipróbálhat egy egyedi, teljes funkcionalitású WMI eszközt, mint például a WMIExplorer.exe.

  • ez nem szerepel a Windows rendszerben. Ez egy nagyon jó eszköz, azonban.
  • nézze meg a következő címen: https://github.com/vinaypamnani/wmie2/releases.
  • indítsa el az eszközt, kattintson a Csatlakozás elemre, kattintson duplán a ROOT\CIMV2
  • elemre a “lekérdezés lapon”, írja be a következő lekérdezést,válassza az IdentifyingNumber, Name, Version FROM Win32_Product lehetőséget, majd nyomja meg az Execute gombot.

MSI csomagok GUID beszerzése (a Termékkód és az UpgradeCode összehasonlítása)

indítsa el a PowerShell-t: tartsa lenyomva a Windows és az R billentyűt együtt, engedje fel a Windows billentyűt, írja be a “powershell” szót, majd nyomja meg az OK gombot, vagy nyomja meg az Enter billentyűt.

másolja az alábbi szkriptet teljes egészében, majd kattintson a jobb gombbal a PowerShell ablakba.

a Win32_Property esetében mind a sorokat, mind az oszlopokat szűrjük (az UpgradeCode csak egy a sok sortípus közül). Legyen felkészülve egy lassú műveletre, a WMI nagyon lassan végez ilyen letöltéseket.

$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"

a frissítési kód a termékcsalád azonosításának egyedi GUID-je. Vagyis ugyanazokat a termékeket, különböző verziókkal, valószínűleg néhány kiadáshoz szállították. Ezek a termékek különböző Termékkódokkal rendelkeznek, de ugyanazon UpgradeCode használatával kapcsolódnak egymáshoz.

például, feltételezve, hogy írtunk egy “Happy MSI” nevű terméket, és ennek a terméknek csak egy MSI csomagja van az ügyfélrendszerre történő telepítéshez.

a termék első kiadása valójában az MSI csomag, amelynek neve “version_1.msi”, a második kiadás pedig ” version_2.msi”. Ezután ennek a két MSI – nek ugyanazzal az UpgradeCode-val kell rendelkeznie. Amikor a felhasználók futtatják a “version_2.msi ” rendszerükön a windows installer az UpgradeCode segítségével dönti el, hogy a termék korábbi verziói már jelen vannak-e a rendszeren.

Installer API “MsiEnumRelatedProducts()” az UpgradeCode-ot használja az összes termékcsalád lekérdezéséhez.

távolítsa el az MSI csomagokat

ha azt szeretné, hogy eltávolítsa az MSI csomagot, és megtalálta a termékkódot (GUID), akkor ezt a következőképpen teheti meg egy emelt parancssor használatával (cmd keresése.exe, jobb klikk és Futtatás rendszergazdaként):

1. Lehetőség: egyszerű, interaktív eltávolítás naplózás nélkül (gyors és egyszerű):

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

gyors paraméter magyarázat:

  • /X = run uninstall sequence
  • {00000000-0000-0000-0000-0000000000C} = Termékkód az eltávolítandó termékhez

engedélyezheti a (részletes) naplózást is, és ha szeretné, csendes módban is futtathatja, ami a 2. opcióhoz vezet:

2. lehetőség: csendes eltávolítás részletes naplózással (jobb kötegelt fájlokhoz):

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

gyors paraméter magyarázat:

  • /X = run uninstall sequence
  • {00000000-0000-0000-0000-0000000000c} = Termékkód az eltávolítandó termékhez
  • /QN = teljesen csendes futás
  • /L*V “C:\My.log ” = részletes naplózás a megadott útvonalon
  • REBOOT=ReallySuppress = kerülje a váratlan, hirtelen újraindítást

Leave a Reply

Az e-mail-címet nem tesszük közzé.