Cómo desinstalar de forma desatendida (silenciosa, sin mostrar mensajes al usuario) aplicaciones de desarrolladores conocidos, como Google Chrome, 7-zip, Mozilla Firefox, AnyDesk, Notepad++, Microsoft OneDrive, etc. Mostramos un script PowerShell de ejemplo que obtiene el comando de desinstalación de cada aplicación.
- Script PowerShell para obtener la ruta y parámetros de desinstalación de una aplicación.
- Script PowerShell para obtener datos de desinstalación de una aplicación pasada por argumento.
- Desinstalar Microsoft OneDrive de forma desatendida/silenciosa.
- Desinstalar Mozilla Firefox de forma desatendida/silenciosa.
- Desinstalar AnyDesk de forma desatendida/silenciosa.
- Desinstalar Notepad++ de forma desatendida/silenciosa.
- Desinstalar Google Chrome de forma desatendida/silenciosa.
- Desinstalar 7-Zip de forma desatendida/silenciosa.
Script PowerShell para obtener la ruta y parámetros de desinstalación de una aplicación
A continuación, mostramos un ejemplo de script PowerShell que, a partir del nombre de una aplicación (admite comodines), obtendrá la ruta de desinstalación y sus parámetros:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$nombreApp = "*7-zip*" $rutaRegistro = @("HKLM:SOFTWAREMicrosoftWindowsCurrentVersionUninstall", "HKLM:SOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionUninstall") foreach($rutaActual in $rutaRegistro) { if (test-path($rutaActual)) { $listaRegApp = Get-ItemProperty "$rutaActual*" | Where-Object {$_.DisplayName -Like $nombreApp} | Select-Object -Property PSPath, UninstallString, DisplayName, DisplayVersion, QuietUninstallString, InstallLocation # Se recorren todas las versiones instaladas de la aplicación foreach($regAppACtual in $listaRegApp) { write-host "DisplayName: " $regAppACtual.DisplayName write-host "DisplayVersion: " $regAppACtual.DisplayVersion write-host "UninstallString: "$regAppACtual.UninstallString write-host "QuietUninstall: "$regAppActual.QuietUninstallString write-host "InstallLocation: "$regAppACtual.InstallLocation write-host "RegPath: "$regAppACtual.PSPath write-host "" } } } |
Si ejecutamos el script anterior, si existe la ampliación indicada en la variable nombreApp, devolverá sus datos de desinstalación. Por ejemplo, para el caso de Microsoft One Drive, devolverá:
|
1 2 3 4 5 |
DisplayName: Microsoft OneDrive DisplayVersion: 25.015.0126.0002 UninstallString: "C:Program FilesMicrosoft OneDrive25.015.0126.0002OneDriveSetup.exe" /uninstall /allusers InstallLocation: RegPath: Microsoft.PowerShell.CoreRegistry::HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstallOneDriveSetup.exe |
Hay que tener en cuenta que NO siempre devolverán los parámetros de desinstalación silenciosa, únicamente los parámetros de desinstalación normal, esto de penderá del desarrollador. También pueden variar en función del tipo de instalación: con .exe o con .msi, incluso si es de 32 bits o es de 64 bits.

En el ejemplo anterior podemos comprobar que el script nos devuelve la ruta y comando de desinstalación normal de 7-Zip (UninstallString), en este caso, será:
|
1 |
C:Program Files7-ZipUninstall.exe |
Y también nos devuelve el comando de desinstalación desatendida (QuietUninstall):
|
1 |
"C:Program Files7-ZipUninstall.exe" /S |
También hay que tener en cuenta que, según el desarrollador, obtendremos todos los datos o solo los imprescindibles. Por ejemplo, en la aplicación Notepad++, su desarrollador sí incluye el valor QuietUninstall:
|
1 2 3 4 5 6 7 |
DisplayName: Notepad++ (64-bit x64) DisplayVersion: 8.5.1 Publisher: Notepad++ Team UninstallString: "C:Program FilesNotepad++uninstall.exe" QuietUninstall: "C:Program FilesNotepad++uninstall.exe" /S InstallLocation: RegPath: Microsoft.PowerShell.CoreRegistry::HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstallNotepad++ |
Su comando de desinstalación normal, por lo tanto, será:
|
1 |
C:Program FilesNotepad++uninstall.exe |
En cambio, otros desarrolladores, no incluyen el valor, por lo que tendríamos que buscarlo en su documentación.
Script PowerShell para obtener datos de desinstalación de una aplicación pasada por argumento
Vamos a hacer una pequeña modificación en el script PowerShell anterior para que se le pueda pasar como argumento el nombre de la aplicación a obtener sus datos de desinstalación:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
param( [Parameter(Mandatory=$true, Position=0)] [string]$nombreApp ) $rutaRegistro = @("HKLM:SOFTWAREMicrosoftWindowsCurrentVersionUninstall", "HKLM:SOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionUninstall") Write-Host "Buscando aplicacion con patron: '$nombreApp'" -ForegroundColor Cyan Write-Host "" $contador = 0 foreach($rutaActual in $rutaRegistro) { if (Test-Path $rutaActual) { $listaRegApp = Get-ItemProperty "$rutaActual*" | Where-Object {$_.DisplayName -Like $nombreApp} | Select-Object -Property PSPath, UninstallString, DisplayName, DisplayVersion, QuietUninstallString, InstallLocation, Publisher # Se recorren todas las versiones instaladas de la aplicacion foreach($regAppActual in $listaRegApp) { $contador++ Write-Host "=== Aplicacion #$contador ===" -ForegroundColor Green Write-Host "DisplayName: " $regAppActual.DisplayName Write-Host "DisplayVersion: " $regAppActual.DisplayVersion Write-Host "Publisher: " $regAppActual.Publisher Write-Host "UninstallString: " $regAppActual.UninstallString if ($regAppActual.QuietUninstallString) { Write-Host "QuietUninstall: " $regAppActual.QuietUninstallString } else { Write-Host "QuietUninstall: " "No disponible" } Write-Host "InstallLocation: " $regAppActual.InstallLocation Write-Host "RegPath: " $regAppActual.PSPath Write-Host "" } } } if ($contador -eq 0) { Write-Host "No se encontraron aplicaciones que coincidan con el patron: '$nombreApp'" -ForegroundColor Yellow } else { Write-Host "Total de aplicaciones encontradas: $contador" -ForegroundColor Green } |
En este caso, guardaremos el script anterior en un fichero con el nombre buscar-desinstalacion.ps1. Una vez guardado, para usarlo, desde una ventana de PowerShell o MS-DOS (cmd), accediendo a la carpeta donde tengamos el fichero del script, ejecutaremos:
|
1 |
.buscar-desinstalacion.ps1 -nombreApp "*Chrome*" |

Para Google Chrome, obtendrá:
|
1 2 3 4 5 |
DisplayName: Google Chrome DisplayVersion: 143.0.7499.170 UninstallString: "C:Program FilesGoogleChromeApplication143.0.7499.170Installersetup.exe" --uninstall --channel=stable --system-level --verbose-logging InstallLocation: C:Program FilesGoogleChromeApplication RegPath: Microsoft.PowerShell.CoreRegistry::HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionUninstallGoogle Chrome |
Desinstalar Microsoft OneDrive de forma desatendida/silenciosa
Para desinstalar Microsoft OneDrive de forma desatendida (silenciosa), obtendremos su comando de desinstalación, con:
|
1 |
.buscar-desinstalacion.ps1 -nombreApp "*OneDrive*" |

En este caso, devuelve:
|
1 2 3 4 5 6 7 |
DisplayName: Microsoft OneDrive DisplayVersion: 25.222.1112.0002 Publisher: Microsoft Corporation UninstallString: "C:Program FilesMicrosoft OneDrive25.222.1112.0002OneDriveSetup.exe" /uninstall /allusers QuietUninstall: No disponible InstallLocation: RegPath: Microsoft.PowerShell.CoreRegistry::HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstallOneDriveSetup.exe |
Como podemos comprobar, Microsoft OneDrive no tiene valor en QuietUninstall.
Para realizar una desinstalación desatendida de Microsoft One Drive, ejecutaremos los comandos:
|
1 2 |
cd "C:Program Files (x86)Microsoft OneDrive23.038.0219.0001" OneDriveSetup.exe /uninstall /allusers |
Estos comandos funcionan tanto en ventana de MS-DOS cmd o símbolo del sistema como en ventana PowerShell:

Más específicamente, con PowerShell, podemos usar los comandos:
|
1 2 |
Set-Location -Path "C:Program Files (x86)Microsoft OneDrive23.038.0219.0001" .OneDriveSetup.exe /uninstall /allusers |
Desinstalar Mozilla Firefox de forma desatendida/silenciosa
Para Mozilla Firefox, el script PowerShell:
|
1 |
.buscar-desinstalacion.ps1 -nombreApp "*Firefox*" |
Nos devolverá:

|
1 2 3 4 5 6 7 |
DisplayName: Mozilla Firefox (x64 es-ES) DisplayVersion: 146.0.1 Publisher: Mozilla UninstallString: "C:Program FilesMozilla Firefoxuninstallhelper.exe" QuietUninstall: No disponible InstallLocation: C:Program FilesMozilla Firefox RegPath: Microsoft.PowerShell.CoreRegistry::HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstallMozilla Firefox |
Su comando desinstalación normal, por lo tanto, será:
|
1 |
"C:Program Files (x86)Mozilla Firefoxuninstallhelper.exe" |
El comando de desinstalación desatendida, no lo incluye. Para desinstalar Mozilla Firefox de forma desatendida (silenciosa), ejecutaremos los comandos:
|
1 2 |
Set-Location -Path "C:Program FilesMozilla Firefoxuninstall" .helper.exe /S |

Desinstalar AnyDesk de forma desatendida/silenciosa
En el caso de AnyDesk, el script nos devolverá:
|
1 2 3 4 5 |
DisplayName: AnyDesk DisplayVersion: ad 8.0.9 UninstallString: "C:Program Files (x86)AnyDeskAnyDesk.exe" --uninstall InstallLocation: "C:Program Files (x86)AnyDesk" RegPath: Microsoft.PowerShell.CoreRegistry::HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionUninstallAnyDesk |
Para desinstalar AnyDesk de forma desatendida (silenciosa), ejecutaremos los comandos (obteniendo la ruta de desinstalación con el script anterior):
|
1 2 |
Set-Location -Path "C:Program Files (x86)AnyDesk" .AnyDesk.exe --uninstall --remove |
Desinstalar Notepad++ de forma desatendida/silenciosa
Para Notepad++, el script anterior devolverá:
|
1 2 3 4 5 6 7 |
DisplayName: Notepad++ (64-bit x64) DisplayVersion: 8.5.1 Publisher: Notepad++ Team UninstallString: "C:Program FilesNotepad++uninstall.exe" QuietUninstall: "C:Program FilesNotepad++uninstall.exe" /S InstallLocation: RegPath: Microsoft.PowerShell.CoreRegistry::HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstallNotepad++ |

Por lo que su comando de desinstalación silenciosa (que sí lo incluye) será::
|
1 2 |
Set-Location -Path "C:Program FilesNotepad++" .uninstall.exe /S |
Desinstalar Google Chrome de forma desatendida/silenciosa
Para Google Chrome, el script no devolverá el comando de desinstalación desatendida:
|
1 2 3 4 5 6 7 |
DisplayName: Google Chrome DisplayVersion: 143.0.7499.193 Publisher: Google LLC UninstallString: "C:Program FilesGoogleChromeApplication143.0.7499.193Installersetup.exe" --uninstall --channel=stable --system-level --verbose-logging QuietUninstall: No disponible InstallLocation: C:Program FilesGoogleChromeApplication RegPath: Microsoft.PowerShell.CoreRegistry::HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionUninstallGoogle Chrome |
Para desinstalar de forma desatendida Google Chrome, el comando será:
|
1 2 |
Set-Location -Path "C:Program FilesGoogleChromeApplication143.0.7499.193Installer" .setup.exe --uninstall --multi-install --chrome --system-level --force-uninstall |

Desinstalar 7-Zip de forma desatendida/silenciosa
En el caso de 7-Zip, el desarrollador sí ha incluido el valor de QuietUninstall:
|
1 2 3 4 5 6 7 |
DisplayName: 7-Zip 22.01 (x64) DisplayVersion: 22.01 Publisher: Igor Pavlov UninstallString: "C:Program Files7-ZipUninstall.exe" QuietUninstall: "C:Program Files7-ZipUninstall.exe" /S InstallLocation: C:Program Files7-Zip RegPath: Microsoft.PowerShell.CoreRegistry::HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall7-Zip |
Por lo que su comando de desinstalación será:
|
1 2 |
Set-Location -Path "C:Program Files7-Zip" .Uninstall.exe /S |