Tengo un servicio de Windows escrito en C# utilizando VS2005.¿Cómo puedo convencer a un msi de VS2005 de que actualice?
La instalación se realiza a través de un asistente que llama a msiexec para instalar el archivo msi también creado mediante VS2005.
Tengo problemas para generar un archivo msi que actualice de una versión del servicio a otra. El programa asistente maneja la detección de la versión actualmente instalada, detiene el servicio, presenta una línea de comando apropiada para msiexec y luego reinicia el servicio.
El msi existente tiene una versión de 1.1.02, la nueva es 1.1.03. Los códigos de producto y actualización son idénticos.
Desinstalar 1.1.02 manualmente mediante los programas de agregar/quitar funciona bien, al igual que la instalación 1.1.03 en un sistema "limpio".
La actualización 1.1.02 a 1.1.03 se realiza a través de los movimientos, pero el resultado final es 1.1.02 instalado.
La línea de comandos que utiliza el asistente para la actualización es:
msiexec/qb/i "MyProduct.msi" REINSTALL = "ALL" REINSTALLMODE = "vos"
dónde voy mal? Asumo que debo haberme perdido algo bastante fundamental ...
La posición alternativa es informar a los clientes que necesitan desinstalar manualmente 1.1.02 antes de ejecutar el asistente para instalar 1.1.03, pero prefiero no tiene que hacer eso.
Editado para añadir:
Cambiar el código del producto (tal como VS2005 también le pide que) en realidad elimina la posibilidad de actualizar en absoluto, ya que el instalador no le permitirá hacer una reinstalación si ese código de producto hasn no se ha instalado previamente.
Todo lo que entonces te dejará hacer es instalar (y entonces obtienes el típico mensaje de "el servicio ya existe").
Sí, tenía esa configuración bien. Al final han renunciado a esto y han recurrido a hacer que el asistente haga la desinstalación seguida de una nueva instalación si detecta una versión anterior en su lugar. Parece que funciona bien y permite que los usuarios finales se actualicen sin tener que manipular manualmente nada. –
Además, por lo que puedo ver, las MSI creadas por Visual Studio son aparentemente notorias por no permitirle actualizar los servicios de todos modos, así que al hacer el trabajo en el asistente, parece que evité caer en la siguiente trampa. –
+1 pero para que quede completamente claro, esto significa actualizar la versión de archivo del proyecto MAIN (¡no el proyecto de instalación!). –