Para SSMS como cualquier otro software, su distribución con la misma configuración para mas de un equipo puede ser un dolor de cabeza que, puede solucionarse con imágenes de disco que se instale en máquinas virtuales o equipos físicos, pero si se requiere el despliegue de un software a muchos equipos que ya están operativos, es otra historia.

Para ésto se maneja como conocemos, la instalación desatendida que puede ser ejecutada de diferentes maneras en las que no entraré en detalles en esta ocasión, pero pudieran ser por ejemplo el instalador disponible en una ubicación de red y la instrucción de instalación con un script a través de Políticas de Grupo, ejecutando manualmente un batch, o también distribuyéndo instrucciones e instalador, a través de el administrador de equipos como Microsoft Intune o System Center (SCCM).

How To – Preparar script para instalar SSMS desde línea de comandos

Primero recordar que con el comando “archivo.exe /?” podemos consultar las opciones desatendidas con las que cuenta el instalador.

Obtener opciones de instalación desatendida instalador.exe /?

Como se muestra, para SSMS, al igual que la instalación manual, contamos solo con la personalización de la ubicación de instalación, pero además:

  • /Install|/Repair|/Uninstall – Indica la manera en que se ejecutará, por lo que es posible además, desinstalar la aplicación.
  • /NoRestart – Evita que se solicite el reinicio del equipo
  • /Log <logfile prefix> – Nombre del archivo log
  • /Passive|/Quiet – Passive muestra información reducida | Quiet no muestra ventana, solo realiza la instalación.
  • SSMSInstallRoot=<PATH> – Ruta completa a la ubicación de instalación
Opciones de instalación desatendida para SSMS 18.2

Entonces basado en lo anterior podemos probar con el siguiente script:

SSMS-Setup-ENU.exe /install /quiet /norestart /log gv-ssms SSMSInstallRoot=”E:\ProgramFiles\Microsoft SQL Server\SSMS 18\”

Instalación desatendida de SSMS desde linea de comandos (cmd)

Es importante recordar que cuando se indican nombres de archivo o URI, se deben añadir comillas de lo contrario si la cadena tiene espacios en blanco, el script fallará.

Ejecución de instalación desatendida de SSMS
Ejecución de instalación desatendida de SSMS

Finalmente podemos ver que el SSMS ya quedó instalado en la ubicación deseada, y que el archivo Log fue almacenado con el prefijo según el nombre que indicamos.

SSMS evidencia de instalación desatendida en ubicación personalizada
SSMS evidencia de instalación desatendida en ubicación personalizada

LOGs

Si especificaste un prefijo, los archivos LOGs son almacenados en el directorio de trabajo, es decir, la ubicación del instalador y de trabajo del script, creados con el prefijo indicado.

Lista de archivos LOG generados durante al instalación desatendida de SSMS
Lista de archivos LOG generados durante al instalación desatendida de SSMS

Errores y fallos

En caso de que se tenga algún error, podremos ver el archivo LOG con la información, en mi caso lo encontré directamente en %temp% que directamente abre el directorio mostrado en la imagen y no en %temp%\ssmssetup como indica el instalador.

Lista de archivos LOG de errores por instalación de SSMS desatendido.
Lista de archivos LOG de errores por instalación de SSMS desatendido.

En el archivo log podemos ver que hay un reinicio de sistema pendiente, por ello es que la instalación ha fallado. Sin embargo, podemos encontrar otros tipos de errores, por lo que analizar el archivo LOG nos dará la información real para conocer el origen del problema.

Contenido de archivo LOG con errores durante instalación de SSMS desatendido
Contenido de archivo LOG con errores durante instalación de SSMS desatendido

Conclusiones

Como siempre, la automatización nos ayuda a evitar pérdida de tiempo, por muy simple que sea dar, en éste caso, un solo clic, puede generar mucho tiempo perdido si lo tienes que hacer n veces.

Si tienen dudas sobre la personalización, o la generación de scripts para mas fines, pueden dejar un comentario o consultarme en mis redes sociales.

Deja un comentario! :)