Script PowerShell para Instalar Software desde ZIP (Sólo si No Está Instalado)

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

Cuando gestionas la instalación de software en Windows, puede ser útil automatizar el proceso con PowerShell. Este artículo te proporciona un script reutilizable que:

Comprueba si el software ya está instalado.
Si no lo está, descarga un archivo ZIP desde una URL.
Extrae el instalador del ZIP.
Ejecuta la instalación en modo silencioso.
Elimina los archivos temporales al finalizar.

Casos de uso

Este script es útil para:

  • Automatizar despliegues en entornos corporativos.
  • Integrar instalaciones en scripts de aprovisionamiento.
  • Crear paquetes de instalación personalizados.

Requisitos

Antes de usar este script:

  • Debes tener PowerShell 5.0 o superior.
  • Ejecutar PowerShell como administrador.
  • Asegúrate de que el software a instalar disponga de una opción de instalación silenciosa (como /S o /quiet).
  • La instalación debe poder detectarse mediante el registro de Windows.

Personalización del script

Tendrás que ajustar 3 variables:

$softwareName = "NombreDelSoftware"            # Nombre del software tal como aparece en el Registro
$zipUrl = "https://ruta/del/software.zip" # URL directa del ZIP
$silentArgs = "/S" # Argumentos de instalación silenciosa

¿Cómo detecta si el software está instalado?

Consulta el registro de Windows, donde el sistema guarda los datos de instalación de programas:

HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\

Filtra por el nombre del software en el campo DisplayName.

Script PowerShell Generalizado

# === PERSONALIZAR ESTAS VARIABLES ===
$softwareName = "NombreDelSoftware"
$zipUrl = "https://ejemplo.com/software.zip"
$silentArgs = "/S"
# ====================================

$zipPath = "$env:TEMP\software_installer.zip"
$extractPath = "$env:TEMP\SoftwareInstall"

# Verificar si ya está instalado (por nombre en el Registro)
$installed = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*" `
-ErrorAction SilentlyContinue | Where-Object { $_.DisplayName -like "*$softwareName*" }

if ($installed) {
Write-Host "$softwareName ya está instalado. No se realizará ninguna acción." -ForegroundColor Yellow
exit 0
}

# Descargar el archivo ZIP
Write-Host "Descargando $softwareName desde: $zipUrl" -ForegroundColor Cyan
Invoke-WebRequest -Uri $zipUrl -OutFile $zipPath

if (-Not (Test-Path $zipPath)) {
Write-Error "Error al descargar el archivo ZIP."
exit 1
}

# Crear carpeta de extracción
if (Test-Path $extractPath) { Remove-Item -Recurse -Force $extractPath }
New-Item -ItemType Directory -Path $extractPath | Out-Null

# Extraer ZIP
Write-Host "Extrayendo instalador..." -ForegroundColor Cyan
Expand-Archive -Path $zipPath -DestinationPath $extractPath -Force

# Buscar instalador (primer .exe en el ZIP)
$installer = Get-ChildItem -Path $extractPath -Filter "*.exe" -Recurse | Select-Object -First 1

if (-Not $installer) {
Write-Error "No se encontró un archivo .exe para instalar."
exit 1
}

# Ejecutar el instalador de forma silenciosa
Write-Host "Instalando $softwareName en modo silencioso..." -ForegroundColor Cyan
Start-Process -FilePath $installer.FullName -ArgumentList $silentArgs -Wait -Verb RunAs

# Limpiar
Remove-Item -Path $zipPath -Force
Remove-Item -Path $extractPath -Recurse -Force

Write-Host "$softwareName instalado correctamente." -ForegroundColor Green

Notas adicionales

  • El script busca el primer .exe dentro del ZIP. Si hay varios instaladores o uno específico con nombre complejo, puedes modificar esa parte.
  • El parámetro /S puede cambiar según el software. Otros comunes: /quiet, /silent, /qn (para MSI).
  • Si el software es de 32 bits y estás en sistema de 64 bits, también revisa esta clave:
HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\
Binario 0
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.