unluckyproccess1999
Goto Top

Java 8 Deinstallation per Silent Skript

Hallo zusammen,

ich habe momentan ein kleines Problem. Ich habe ein Batch-Skript erstellt, um die spezifischen Versionen von Java 8 zu deinstallieren. Wenn ich jedoch den Befehl für die Silent-Deinstallation ausführe, passiert nichts – das Programm wird nicht deinstalliert.

Zur Situation: Wir möchten über das Skript die alten Java 8-Versionen von unseren Clients entfernen, um OpenJDK zu installieren. Dafür benötigen wir ein Skript, das alle Java 8-Versionen abfragt und diese deinstalliert.

Hier ist der Befehl, den ich verwendet habe:

msiexec /x {77924AE4-039E-4CA4-87B4-2F32180421F0} /quiet

Ich hatte die Idee, ein Skript zu schreiben, das die GUID abruft und dann in diesem Befehl für die stille Deinstallation verwendet. Allerdings funktioniert der Befehl nicht einmal, wenn ich ihn direkt in der Eingabeaufforderung eingebe.

Vielen Dank für eure Hilfe!

Gruß
Jasha

Content-ID: 12771123519

Url: https://administrator.de/contentid/12771123519

Ausgedruckt am: 21.11.2024 um 18:11 Uhr

Michi91
Michi91 15.08.2024 um 15:54:32 Uhr
Goto Top
Moin,
und was passiert ohne /quiet?
Crusher79
Crusher79 15.08.2024 um 15:58:57 Uhr
Goto Top
Liste mal die Number-Codes und vergleiche die!

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

Mit PowerShell.

Quelle: https://stackoverflow.com/questions/29937568/how-can-i-find-the-product- ...


Deine ist offiziell die von Oracle aus den Help Inhalten. Lasst mal das Kommando raus und schau welchen Product Code du hast!
SatEddY
SatEddY 15.08.2024 um 17:26:21 Uhr
Goto Top
Ich habe dazu das folgende powershell script:
# Uninstall All Java installation on this machine

# Get all installed Java Versions
$uninstalls32 = gci "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -like "*Java 8 Update*" } | select UninstallString  
$uninstalls64 = gci "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -like "*Java 8 Update*" } | select UninstallString  

# Run msiexec uninstall silently if either registry path has an uninstall string present
if ($uninstalls64) {
    foreach ($uninstall64 in $uninstalls64) {
        $uninstall64 = $uninstall64.UninstallString -Replace "msiexec.exe","" -Replace "/I","" -Replace "/X",""  
        $uninstall64 = $uninstall64.Trim()
        Write-Output "Found Java 8 Update Installer (64bit) - uninstalling..."  
        Start-Process "msiexec.exe" -arg "/X $uninstall64 /qb" -Wait  
    }
}
if ($uninstalls32) {
    foreach ($uninstall32 in $uninstalls32) {
        $uninstall32 = $uninstall32.UninstallString -Replace "msiexec.exe","" -Replace "/I","" -Replace "/X",""  
        $uninstall32 = $uninstall32.Trim()
        Write-Output "Found Java 8 Update Installer (32bit) - uninstalling..."  
        Start-Process "msiexec.exe" -arg "/X $uninstall32 /qb" -Wait  
    }
}
UnluckyProccess1999
UnluckyProccess1999 16.08.2024 um 09:11:24 Uhr
Goto Top
Zitat von @Michi91:

Moin,
und was passiert ohne /quiet?

Also ohne Quiet kommt ganz normal wollen Sie deinstallieren und dann kann man die Deinstallation durch Klicken und es ist auch weg.
UnluckyProccess1999
UnluckyProccess1999 16.08.2024 um 09:17:42 Uhr
Goto Top
Zitat von @Crusher79:

Liste mal die Number-Codes und vergleiche die!

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

Mit PowerShell.

Quelle: https://stackoverflow.com/questions/29937568/how-can-i-find-the-product- ...


Deine ist offiziell die von Oracle aus den Help Inhalten. Lasst mal das Kommando raus und schau welchen Product Code du hast!

Also für meine "Test" Java 8 Version auf meinem PC habe ich diesen GUID

{77924AE4-039E-4CA4-87B4-2F32180421F0} Java 8 Update 421

Ich habe gelesen, dass die GUID einem Schema entspricht und immer nur die fett markierten Zahlen sich ändern. Stimmt das?
UnluckyProccess1999
UnluckyProccess1999 16.08.2024 um 09:20:02 Uhr
Goto Top
Zitat von @SatEddY:

Ich habe dazu das folgende powershell script:
# Uninstall All Java installation on this machine

# Get all installed Java Versions
$uninstalls32 = gci "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -like "*Java 8 Update*" } | select UninstallString  
$uninstalls64 = gci "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -like "*Java 8 Update*" } | select UninstallString  

# Run msiexec uninstall silently if either registry path has an uninstall string present
if ($uninstalls64) {
    foreach ($uninstall64 in $uninstalls64) {
        $uninstall64 = $uninstall64.UninstallString -Replace "msiexec.exe","" -Replace "/I","" -Replace "/X",""  
        $uninstall64 = $uninstall64.Trim()
        Write-Output "Found Java 8 Update Installer (64bit) - uninstalling..."  
        Start-Process "msiexec.exe" -arg "/X $uninstall64 /qb" -Wait  
    }
}
if ($uninstalls32) {
    foreach ($uninstall32 in $uninstalls32) {
        $uninstall32 = $uninstall32.UninstallString -Replace "msiexec.exe","" -Replace "/I","" -Replace "/X",""  
        $uninstall32 = $uninstall32.Trim()
        Write-Output "Found Java 8 Update Installer (32bit) - uninstalling..."  
        Start-Process "msiexec.exe" -arg "/X $uninstall32 /qb" -Wait  
    }
}

Kann man das Skript auch Quiet ausführen ?
SatEddY
SatEddY 16.08.2024 um 09:35:23 Uhr
Goto Top
Wenn man das Write-Output auskommentiert sieht man keine Ausgaben. Der Parameter /qb zeig bei der Deinstalation den Baisic View, lässt sich sicher auch ändern. Einfach mal msiexec.exe nur mit /? aufrufen.
TK1987
Lösung TK1987 16.08.2024 um 09:49:33 Uhr
Goto Top
Moin,

Kann man das Skript auch Quiet ausführen ?
für Silentdeinstallation halt "/quiet /passive" anfügen.

Auch als kleiner singleliner möglich:
"Wow6432Node\",""|%{gp "HKLM:\Software\${_}Microsoft\Windows\CurrentVersion\Uninstall\*"}|? {$_.DisplayName -like "*java*" -and $_.UninstallString}|%{iex ($_.UninstallString.Replace('/I','/X') -replace '{.+?}','"$0" /quiet /passive')}  

Gruß Thomas