reparar reinstalar para msi instalar desinstalar descargar windows-installer auto-update

windows installer - reinstalar - ¿Cuál es la mejor manera de actualizar una instalación de MSI a través de Internet?



windows installer repair (5)

¿Cuál es la mejor manera de actualizar una instalación de MSI a través de Internet?

ClickOnce no es compatible con MSI.

Necesito que la actualización se realice automáticamente a través de Internet, de la misma manera que se producen las actualizaciones de Windows.

Lo ideal sería que mi aplicación detecte automáticamente que hay una actualización disponible y la descargue e instale.

Las respuestas solo deben tratar con las instalaciones de MSI. No me importa si es necesario que haya un servicio de Windows instalado para monitorear las actualizaciones.



Esto es lo que he hecho recientemente para un cliente:

La interfaz de usuario se está ejecutando como el usuario conectado.

El servicio se está ejecutando como sistema. El servicio verifica el contenido y lo descarga a un directorio temporal. Luego anuncia el MSI usando el comando / JM. El instalador ahora puede ser instalado por un usuario no privilegiado.

El servicio envía un mensaje de IPC a la aplicación que dice que es hora de instalar. La aplicación inicia el instalador y le pasa un indicador que indica que debe reiniciar la aplicación. La aplicación deja de liberar los archivos bloqueados.

Al final del instalador, el indicador hace que el instalador reinicie la aplicación.

También eche un vistazo a la biblioteca wuw4. Ayuda a crear una gran cantidad de esta solución.

Este es un patrón complejo pero funciona muy bien. Soy dueño de una empresa que puede ayudarlo a hacer esta solución. :)


Esto es lo que normalmente haría (es solo un concepto de cómo actualizo mi programa):

  • Use Advanced Installer O cualquier otro MSI installer/packer compatible con la Command Line para empaquetar los archivos de su programa actualizado. Debe configurar los parámetros correctamente y probarlo antes de continuar con el siguiente paso.

  • Vaya a Visual Studio -> seleccione su proyecto y luego -> propiedades -> Crear eventos.

  • En el cuadro de texto " Post-Build event command line ", ingrese los parámetros de línea de comando que creó anteriormente y luego haga clic en Aceptar.

  • Ahora, cada vez que construya su proyecto, Visual Studio empaquetará automáticamente sus archivos con MSI installer / Packer.

  • El último paso es buscar trabajos de FTP Client desde la línea de comandos también.

  • Establezca los parámetros correctos y agréguelos a "Evento posterior a la compilación" después del anterior.

  • Ahora si construyes tu proyecto con visual studio de nuevo. Sus archivos se empaquetarán automáticamente y luego se subirán a su servidor.

Ahora sus archivos deberían actualizarse completamente en el servidor y ya no tendrá que preocuparse por eso. Esa es la mejor solución que he encontrado, la estoy usando y funciona como un encanto ...

EDITAR: una cosa más, también puede agregar una rutina simple para buscar actualizaciones más recientes en el servidor dentro de su programa. Algo así como verificar el hash MD5 de los archivos o las versiones de los archivos, etc. Una vez que la rutina encuentra una nueva actualización, debería avisarle al usuario y luego decirle al usuario que descargue la última actualización, etc.


Puede utilizar la utilidad msiexec. Here puedes encontrar un ejemplo.


Windows Installer no admite actualizaciones automáticas, ni se encargará de su entrega. La empresa para la que trabajo vende un producto dirigido a actualizaciones y más .