visual-studio-2008 - reparar - visual studio code
Visual Studio 2005-> Problema de actualizaciĆ³n del proyecto de instalador de servicio 2008/10 (2)
Actualicé un proyecto de generador de MSI [.vdproj integrado en VS2008] System.Configuration.Install.Installer con un ServiceProcessInstaller
y un ServiceInstaller
de Visual Studio 2005 a 2008. No hay personalizaciones de consecuencia para la clase de instalador (es decir, no lo intento para iniciar o detener servicios o registrar niños)
RemovePreviousVersions
se establece en true
y estoy cambiando la Version
y el ProductCode
. Esto desencadena un error durante la instalación:
"error 1001: el servicio especificado ya existe"
Google produce cosas (pero no en SO hasta ahora): Google para "El servicio especificado ya existe"
El más útil que he visto hasta la fecha es http://forums.msdn.microsoft.com/en-US/winformssetup/thread/b2d1bd22-8499-454e-9cec-1e42c03e2557/ sin embargo, esto no responde a la pregunta fundamental : -
Dado que el usuario puede elegir:
a) una ubicación de instalación que es la misma
o b) una ubicación de instalación diferente
¿Cuáles serían los cambios mínimos en el código que uno haría con sensatez para garantizar que el antiguo servicio se desinstale y el nuevo se instale? ¿O hay algo más que un cambio de código necesario para resolver esto en el escenario básico de actualización de v1.0.1 a v1.0.2 del mismo servicio con el mismo nombre (es decir, firma)
(AIUI el nombre fuerte solo entra en juego si uno tiene un paso de desinstalación importante en el instalador anterior que no tiene en el nuevo).
Genere un nuevo instalador en VS 2008 y no le va mejor.
Por ahora, mi solución es dejar de actualizar la Version
y el ProductCode
, lo que obliga al usuario a desinstalarlo manualmente cuando se le informa que ya tiene una versión instalada.
Adición gracias al sondeo de divo : Si bien el truco más simple que podría funcionar es decir "si se llama a un paso de instalación y es una actualización, primero llame al paso de desinstalación para el servicio", ¡me gustaría obtener una respuesta oficialmente bendecida! (por ejemplo, ¿cómo se las arregla el hack simple cuando se cambia el nombre del servicio durante una actualización?)
¿Su servicio (configuración) proporciona una acción personalizada para desinstalar el servicio?
Una actualización significa que el producto previamente instalado se desinstala antes de que se instale el nuevo producto. Creo que el motivo del error es que el servicio anterior no se puede eliminar.
Si su servicio está escrito en .NET, puede encontrar útil este artículo: http://www.codeproject.com/KB/install/InstallService.aspx
Esto debería responder a tu pregunta
¿Cómo elimino "El servicio especificado ya existe" cuando instalo nuevas versiones de mi software?