
Al instalar un servicio desarrollado internamente en un Windows Server 2012 R2, el sistema de alguna manera ha llegado a un estado en el que InstallUtil.exe cree que un servicio existe y no existe. Tras el comando de instalación, el proceso se inicia y retrocede con el error:
System.ComponentModel.Win32Exception: el servicio especificado ya existe
Al darle a InstallUtil.exe un comando de desinstalación para ese mismo archivo de servicio, el proceso finalmente se completa con el error:
System.ComponentModel.Win32Exception: el servicio especificado no existe como servicio instalado
De hecho, el servicio existía antes de mi intento de desinstalarlo y reinstalarlo, aunque ahora no puedo encontrar rastros de él en el comando Get-Service de Powershell, ni en los archivos ensambladores, ni en el registro. Creo que esto se debió al cambio del nombre del servicio en el software compilado sin una desinstalación/reinstalación completa (es decir, simplemente sobrescribiendo el ejecutable). Mi pregunta es ¿qué puedo hacer ahora para diagnosticar el problema?
Respuesta1
Se encontró y determinó que la causa era: otro desarrollador había agregado sin darse cuenta un segundo instalador de servicio con exactamente el mismo nombre de servicio en el proyecto. (Por supuesto, no había probado este cambio). El resultado neto de intentar instalar dos servicios con exactamente el mismo nombre no se reflejó en ninguno de los registros de instalación o de Windows, ni en el símbolo del sistema cuando el servicio se instaló mediante comando. línea.
Para hacer este diagnóstico, ingresé al código fuente y modifiqué el nombre del servicio yo mismo. Cuando se reconstruyó e instaló, se agregaron dos servicios a la lista de Servicios.
Respuesta2
En mi caso resultó que el nombre algo genérico de "Monitor" que había elegido ya existía. Se me ocurrió un nombre más específico y todo funcionó.