update servicio puede porque está ejecutando descargar como buscar actualizar actualizaciones windows-installer auto-update

windows installer - servicio - ¿Cuál es la mejor manera de actualizar automáticamente una aplicación de Windows?



windows update windows 10 (3)

Google Chrome se actualiza automáticamente cada cinco horas . Quiero clonar esta funcionalidad exacta en mi propia aplicación. ¿Cuál es la mejor manera de implementar esta funcionalidad en Windows?


Para replicar este comportamiento de actualización necesita dos cosas:

  1. Una aplicación de actualización que busca actualizaciones regularmente. Si se encuentra una actualización, debería instalarla automáticamente. La mayoría de las herramientas de creación de configuración comercial incluyen buenas aplicaciones de actualización. Puede intentar escribir un actualizador usted mismo, pero no es tan fácil como parece.

  2. Instalaciones por usuario para cada una de sus versiones de producto. Una instalación por usuario escribe datos solo en la carpeta del perfil de usuario (AppData, carpeta de itinerancia, etc.) y HKEY_CURRENT_USER. Sin archivos de programa o HKEY_LOCAL_MACHINE.

Se requieren instalaciones por usuario para que pueda realizar la actualización de forma silenciosa. Si la instalación es por máquina, la versión más nueva de Windows mostrará el mensaje de elevación y el usuario no sabrá lo que está sucediendo.

El actualizador

Algunos actualizadores usan servicios. Para las actualizaciones automatizadas, esta no es una solución real porque la instalación del servicio necesita privilegios de administrador. Por lo tanto, su proceso de instalación y las actualizaciones posteriores mostrarán indicaciones de elevación.

Otro enfoque es usar una aplicación Updater por usuario. No requiere elevación y se puede instalar en la carpeta de la aplicación. Este tipo de actualizador se puede ejecutar como una tarea programada o desde dentro de su aplicación (ejecútelo cuando se inicie su aplicación).

En ambos casos, debe tener en cuenta que es posible que el Actualizador necesite actualizarse. Por lo tanto, el proceso que realiza la actualización debe ser un proceso temporal (por ejemplo, una copia temporal de la aplicación de actualización). También debería funcionar sin elevación. Es por eso que un servicio no es una buena idea. Tendría que detenerse antes de la actualización, usar un proceso temporal que maneja la actualización y comenzar de nuevo cuando haya terminado.

Otras cosas a considerar son:

  • problemas de permisos (si el proceso de actualización necesita privilegios o elevación)
  • ubicaciones de descarga
  • mecanismo de detección de actualizaciones (cómo el Actualizador detecta si una nueva versión debe instalarse o no)

Las actualizaciones

Un error común es que las actualizaciones deben ser los archivos de la aplicación (como la aplicación principal EXE). Raramente ocurre esto porque una actualización puede necesitar sobrescribir más que solo un archivo.

La mayoría de las actualizaciones son paquetes de instalación (MSI por ejemplo) o parches (MSP). Este es el mejor enfoque porque manejan toda la lógica de actualización:

  • detectar aplicaciones en ejecución
  • actualizar recursos
  • actualizar la información del producto (accesos directos, applet de Programas y Características en el Panel de control, etc.)

Los paquetes de instalación también simplifican la aplicación Updater. Con este tipo de actualizaciones, Updater solo necesita detectar actualizaciones disponibles, descargarlas y ejecutarlas.

Actualizaciones funciona de dos maneras:

Windows Installer tiene un gran soporte para ambos, por lo que podría usar paquetes MSI y parches MSP . También admite instalaciones silenciosas, por lo que todo lo que debe hacer Updater es ejecutar el paquete con un parámetro de línea de comando.

Estos paquetes también admiten instalaciones por usuario o por máquina a través de la propiedad ALLUSERS .

Distribución de actualizaciones

Después de decidir sobre un Actualizador y algunos paquetes de actualización, también necesita un mecanismo de distribución:

  • una forma de informar al actualizador que hay actualizaciones disponibles (por ejemplo, un archivo de información de actualizaciones en su servidor)
  • una forma de detectar si una actualización está instalada o no (por lo que está instalada solo una vez)

Todo esto no es muy fácil. Esta es la razón por la cual muchos productos usan Updaters de terceros. Incluso algunas herramientas de creación de configuraciones comerciales ofrecen Actualizadores para sus paquetes.

Un actualizador personalizado es utilizado principalmente por compañías muy grandes con muchos productos, porque la inversión vale la pena para ellos.