fleet/ee/maintained-apps/inputs/winget/scripts/docker_uninstall.ps1

58 lines
1.6 KiB
PowerShell
Raw Normal View History

# Define acceptable/expected exit codes
$ExpectedExitCodes = @(0, 19)
# Uninstall Registry Key
$machineKey = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Docker Desktop'
# Initialize exit code
$exitCode = 0
try {
$key = Get-ItemProperty -Path $machineKey -ErrorAction Stop
# Get the uninstall command. Some uninstallers do not include 'QuietUninstallString'
$uninstallCommand = if ($key.QuietUninstallString) {
$key.QuietUninstallString
} else {
$key.UninstallString
}
# The expected uninstall command value is "C:\Program Files\Docker\Docker\Docker Desktop Installer.exe" "uninstall"
$splitArgs = $uninstallCommand.Split('"')
if ($splitArgs.Length -ne 5) {
Throw "Unexpected uninstall command. Please update the uninstall script.`nUninstall command: $uninstallCommand"
}
$uninstallCommand = $splitArgs[1]
$uninstallArgs = $splitArgs[3]
Write-Host "Uninstall command: $uninstallCommand"
Write-Host "Uninstall args: $uninstallArgs"
$processOptions = @{
FilePath = $uninstallCommand
PassThru = $true
Wait = $true
}
if ($uninstallArgs -ne '') {
$processOptions.ArgumentList = "$uninstallArgs --quiet"
} else {
$processOptions.ArgumentList = "--quiet"
}
# Start uninstall process
$process = Start-Process @processOptions
$exitCode = $process.ExitCode
Write-Host "Uninstall exit code: $exitCode"
} catch {
Write-Host "Error: $_"
$exitCode = 1
}
# Treat acceptable exit codes as success
if ($ExpectedExitCodes -contains $exitCode) {
Exit 0
} else {
Exit $exitCode
}