Wiki-Quellcode von Deinstallation einer MSI-Datei mittels einer WMI-Abfrage
Zuletzt geändert von Sabrina V. am 2025/01/10 12:28
Zeige letzte Bearbeiter
author | version | line-number | content |
---|---|---|---|
1 | {{aagon.floatingbox/}} | ||
2 | |||
3 | = Ausgangslage = | ||
4 | |||
5 | Mithilfe der WMI-Abfrage wird in diesem Client Command die //MSI-IdentifyingNumber// ermittelt, die anschließend in dem Befehl //Uninstall MSI package //genutzt wird. Durch die Nutzung der WMI-Abfrage können Sie auch mit Wildcards arbeiten, um mehrere Softwareversionen zu berücksichtigen. In diesem Beispiel soll die Software 7-Zip deinstalliert werden. Das Datenkompressionsprogramm ist oftmals im Unternehmen nicht auf einen einheitlichen Stand, wodurch ein mühsames Zusammensuchen der einzelnen Produktcodes nötig wäre. Umgehen Sie die einzelnen Deinstallationen verschiedener Versionen und sorgen Sie so für einen einheitlichen Softwarestand. | ||
6 | |||
7 | {{aagon.infobox}} | ||
8 | Dies ist nur ein Weg, wie Sie eine MSI-Datei über ein Client Command deinstallieren können. Sollten Sie beispielsweise nur eine Version einer Software installieren wollen, können Sie dies auch über den Produktcode und das //Ignorieren von Fehlern// (per Fehlercodes) machen. Lesen Sie [[hier>>doc:ACMP.67.ACMP-Solutions.Client Commands.Use Cases für Client Commands.Deinstallation einer MSI-Datei.WebHome]] die Vorgehensweise nach. | ||
9 | {{/aagon.infobox}} | ||
10 | |||
11 | Gehen Sie ansonsten wie folgt vor: | ||
12 | |||
13 | == Skript auswählen == | ||
14 | |||
15 | 1. Navigieren Sie ins Modul //Client Commands// > //Erstellen//. | ||
16 | 1. Klicken Sie in der Ribbonleiste auf //Hinzufügen//. Es öffnet sich der Client Command Editor, in dem Sie entscheiden müssen, ob es sich um ein Console- oder Client Skript handelt. In diesem Fall wählen Sie das Client Skript aus. | ||
17 | |||
18 | == Befehl //WMI Query //auswählen und bearbeiten == | ||
19 | |||
20 | {{aagon.warnungsbox}} | ||
21 | Innerhalb der WMI Abfrage greifen Sie auf die WMI-Klasse //Win32_Produkt// zu. Diese Klasse stellt die Produkte dar, wie sie vom Windows Installer installiert werden beziehungsweise als Installationspaket auf den Clients hinterlegt werden. Das kann unter Umständen zur Folge haben, dass unzählige Einträge im Eventlog gelistet werden, da sämtliche MSI-Installationsdateien aufgeführt werden. Beachten Sie dies, denn dieser Schritt kann zu Verzögerungen führen. [[Microsoft>>https://learn.microsoft.com/en-us/previous-versions/windows/desktop/legacy/aa394378(v=vs.85)]] beschreibt dieses Problem wie folgt: | ||
22 | |||
23 | //Win32_Product is not query optimized. Queries such as "select * from Win32_Product where (name like 'Sniffer%')" require WMI to use the MSI provider to enumerate all of the installed products and then parse the full list sequentially to handle the “where” clause. This process also initiates a consistency check of packages installed, verifying and repairing the install. With an account with only user privileges, as the user account may not have access to quite a few locations, may cause delay in application launch and an event 11708 stating an installation failure.// | ||
24 | {{/aagon.warnungsbox}} | ||
25 | |||
26 | 1. Wählen Sie zunächst aus der Commandliste den Befehl //WMI// > //WMI Query// aus. | ||
27 | 1. Öffnen Sie den Befehl per Doppelklick. Das Startfenster sind die Details zu den WMI Einstellungen. | ||
28 | 1. Wählen Sie hier den einfachen Modus aus. | ||
29 | 1. Wählen Sie unter Root den Eintrag „root\cimv2“ aus der Dropdown-Liste aus. | ||
30 | 1. Klicken Sie neben der WMI Klasse auf das //WMI //Icon. Suchen Sie im geöffneten Fenster den Eintrag „Win32_Product“ oder geben Sie diesen händisch in das Suchfeld ein. Auf der rechten Seite sehen Sie weitere Informationen zu dem jeweiligen Eintrag. Klicken Sie anschließend auf //OK//. | ||
31 | 1. Fügen Sie in das Textfeld „CAPTION like '7-Zip%'“ ein. | ||
32 | 1. Speichern Sie das Ergebnis in einer Variable ab. Klicken Sie dafür auf das Icon neben den Variablennamen. | ||
33 | 1. Im sich öffnenden Fenster müssen Sie unter Aktionen eine neue Variable einfügen. Geben Sie dafür in das Feld //Variablennamen //den Wert „WMIRESULT“ ein und klicken Sie auf das Plus Icon. | ||
34 | |||
35 | [[Variable WMIRESULT einfügen>>image:1736511066054-639.png||data-xwiki-image-style-alignment="center"]] | ||
36 | |||
37 | 9. Beenden Sie den Schritt, indem Sie auf //OK //klicken und anschließend wieder zum Ursprungsfenster gelangen. Schließen Sie auch dieses Fenster durch ein erneutes klicken auf //OK.// | ||
38 | |||
39 | [[WMI Query>>image:65_Use Case Client Commands_WMI Abfrage_Details_539.png]] | ||
40 | |||
41 | == Befehl //Uninstall MSI package //auswählen und editieren == | ||
42 | |||
43 | 1. Laden Sie den Befehl //Uninstall MSI package //(MSI) in das Skript, indem Sie es per Doppelklick auswählen. Rücken Sie den Befehl entweder über die Schnellwahlleiste oder den Shortcut STRG + Pfeiltaste rechts ein, sodass er unterhalb des ersten Befehls (WMI Query) angezeigt wird.{{aagon.infobox}}Sollten sich bei Ihnen in der Umgebung mehrere Installationen zu der gleichen Software befinden (in diesem Beispiel zu 7-Zip), können Sie durch die Einrückung auch mehrere Einträge finden. Der Befehl wird mehrfach durchgeführt, da es sich um ein Loop Command handelt und hierbei die gesuchte Software so oft deinstalliert wird, bis keine zutreffenden IDs mehr gefunden werden.{{/aagon.infobox}} | ||
44 | 1. Geben Sie unter dem Tab //Details //zu den Produktinformationen den Produktcode //%WMIRESULT.IdentifyingNumber% //ein. Die Variable setzt sich aus dem Variablenwert, den Sie zuvor gespeichert haben (WMIRESULT) und der IdentifyingNumber zusammen. Die //IdentifyingNumber //ist die Produkt-ID, die zur Deinstallation aller Softwareeinträge zu 7-Zip benötigt wird. | ||
45 | 1. Wählen Sie als Anzeigemodus //Unbeaufsichtigt //aus. | ||
46 | 1. Setzen Sie unter Optionen einen Haken für //Neustart unterdrücken. //Sollte für die Deinstallation ein Neustart nötig sein, wird dieser nicht direkt im Anschluss durchgeführt. Hierdurch werden andere offene Programme oder Dateien nicht einfach geschlossen, ohne dass Sie diese abgespeichert haben. | ||
47 | 1. Klicken Sie anschließend auf //OK//. | ||
48 | |||
49 | [[MSI Paket deinstallieren>>image:65_Use Case Client Commands_MSI Paket deinstallieren_WMI Result_504.png]] | ||
50 | |||
51 | Als letzten Schritt müssen Sie Ihr Client Command im Editor abspeichern. | ||
52 | |||
53 | [[Client Command-Editor: Deinstallation einer MSI-Datei mittels einer WMI-Abfrage>>image:65_Use Case Client Commands_WMI Abfrage Gesamtübersicht_1436.png]] | ||
54 | |||
55 | Bei der Ausführung des Client Commands wird die Software 7-Zip von den Clients deinstalliert. |