Código fuente completo en C# (C Sharp) de .Net que comprueba si existe una versión concreta de UltraVNC instalada en un equipo. Si no existe la instala, si existe comprueba si es diferente, si lo es desinstala la actual e instala la nueva. Todo ello de forma silenciosa y transparente para el usuario. Sirve para automatizar la instalación/actualización de UltraVNC en equipos Windows. Permite también establecer los valores de configuración de UltraVNC: contraseña de acceso, mensaje de petición de acceso, etc.

Requisitos e información para desarrollar aplicación de consola C# que instala/actualiza software automáticamente

Aunque la aplicación que describimos a continuación está diseñada específicamente para instalar/actualizar el software UltraVNC, también puede ser adaptada (con pequeñas modificaciones) para instalar cualquier otro software en un entorno Windows de forma automática y transparente para el usuario (silenciosa).

Necesitaremos disponer del IDE de desarrollo Microsoft Visual Studio .NET, en nuestro caso usamos la versión Community 2022. En el siguiente artículo explicamos cómo instalarla:

Esta aplicación de consola funcionará en sistemas operativos Windows. Por lo que dispondremos en nuestra organización de equipos Windows, al menos desde Windows XP en adelante, hasta Windows 10 y Windows 11. Y en equipo servidores Windows Server, desde Windows Server 2003 en adelante, hasta Windows Server 2019 y Windows Server 2022. Estos equipos necesitarán tener instalada la versión .NET Framework mínima que se use en el desarrollo de la aplicación de consola.

Para el caso de este script/ejecutable, dado que necesitará conocer de antemano la ruta donde se encuentre el instalador de UltraVNC (tanto en versión de 32bits como en versión de 64bits), así como los ficheros de configuración, contraseña y demás, necesitará tener estos ficheros en una carpeta compartida de un servidor de la red, que sea accesible (al menos de lectura), para todos los usuarios. En el ejemplo este servidor se llamará «servidorred» y la carpeta compartida donde se encuentran los instaladores y los ficheros de configuración será:

\\servidorred\infor\adm\VNC

Por otro lado, la aplicación almacenará en un fichero de log el resultado de su ejecución en cada equipo. Por ello, también se necesitará una carpeta compartida, con permisos de lectura/escritura, ubicada en algún servidor de la red. En este caso se coloca esta carpeta en:

\\servidorred\infor\adm\eventos\vnc\UltraVNC.csv

Los ficheros necesarios para que la aplicación de consola funcione serán:

  • \\servidorred\infor\adm\VNC\UltraVNC_1_3_81_X64_Setup.exe: la aplicación comprobará si el equipo es de 32 bits o de 64 bits. Si es de 64 bits instalará su versión correspondiente, indicada en esta ruta.
  • \\servidorred\infor\adm\VNC\UltraVNC_1_3_81_X86_Setup.exe: la aplicación comprobará si el equipo es de 32 bits o de 64 bits. Si es de 32 bits instalará su versión correspondiente, indicada en esta ruta.
  • \\servidorred\infor\adm\VNC\UltraVNC.ini: fichero de configuración base de UltraVNC. La aplicación copiará este fichero de su carpeta origen (esta), a la destino donde se encuentre instalado UltraVNC, para dejar la misma configuración en todos los equipos.
  • C:\Program Files\uvnc bvba\UltraVnc\UltraVNC.ini: ruta donde se encuentra el fichero de configuración de UltraVNC instalado en todos los equipos.
  • \\servidorred\infor\adm\eventos\vnc\UltraVNC.csv: carpeta y fichero donde se guardarán los resultados de la ejecución de la aplicación en cada equipo.
  • \\servidorred\infor\adm\VNC\filenameTIC: la aplicación permite identificar si un equipo es del departamento de Informática (TIC), en cuyo caso instalará tanto el server como el client de UltraVNC, copiando el fichero de configuración indicado aquí sólo para estos equipos.
  • \\servidorred\infor\adm\VNC\filename: la aplicación permite identificar si un equipo es del departamento de Informática (TIC), este fichero lo copiará a los equipos que NO sean de Informática (TIC).
  • EquiposTIC: variable donde se introduce el nombre de red (nombre DNS, hostname) de los equipos del departamento de Informática (TIC) en los que queramos que se intale tanto el server como el client de UltraVNC.

Código fuente completo de la aplicación de consola en C# para instalar/actualizar UltraVNC

Crearemos un proyecto de aplicación de consola con .Net Framework 4.8 (funciona con versiones inferiores de .NET Framework). Llamaremos al proyecto «InstalarUltraVNC». En primer lugar, crearemos una clase llamada EscribirLog.cs, nos servirá para guardar en fichero de log el resultado de la ejecución de cada comando, para depurar. Tendrá el siguiente código C#:

En el fichero Program.cs añadiremos el siguiente código C#:

Ejecución y funcionamiento de aplicación C# de consola que instala/actualiza una aplicación automáticamente

Si queremos ejecutar la aplicación mediante directiva GPO, una vez compilada la aplicación C# y generado el .exe (InstalarUltraVNC.exe), lo copiaremos a alguna carpeta de algún servidor accesible por todos los usuarios. Habitualmente, los script de inicio de sesión de las directivas se suelen copiar a la carpeta:

\\dominio\SysVol\dominio\Policies{7497-42F-4B8F-8F9-71AA}\Machine\Scripts\Startup

Pero puede copiarse a la ubicación que se quiera, siempre y cuando los usuarios tengan, al menos, permisos de lectura.

Crearemos una directiva de grupo y agregaremos la ruta del ejecutable .exe de nuestra aplicación, para que se ejecute o bien en el inicio o bien incluso en el cierre de sesión:

Una vez creada la directiva, la asignaremos a un grupo de equipos (computers), dado que la hemos establecido en la rama «Configuración del equipo», para que se ejecute cuando el equipo se inicie.

La aplicación realizará lo siguiente en su inicio:

  • Comprobará si el equipo es de 32 o de 64 bits. En función del resultado ejecutará el instalador de la versión de 32 bits o de 64 bits.
  • En todos los casos, sea equipo de 32 o 64 bits, si existe una versión diferente a la indicada en versionNueva, la herramienta la desinstalará.
  • Instalará la versión de 32 o 64 bits de UltraVNC que haya en la carpeta origen.
  • Reemplazará el fichero de configuración del UltraVNC instalado por el de la carpeta origen.
  • En el caso de que el nombre del equipo coincida con alguno de la variable EquiposTIC, además de instalar el Server, también instalará el Viewer. Para que los técnicos de Informática (TIC) puedan hacer control remoto al resto de equipos. Para este caso la aplicación reemplazará un fichero de configuración diferente del resto de equipos.

De esta forma siempre tendremos todos los equipos de la organización con la última versión de UltraVNC y todos tendrán la misma configuración.