
Ao instalar um serviço desenvolvido internamente em um Windows Server 2012 R2, o sistema de alguma forma entrou em um estado em que InstallUtil.exe pensa que um serviço existe e não existe. Após o comando de instalação, o processo é iniciado e revertido com o erro:
System.ComponentModel.Win32Exception: o serviço especificado já existe
Ao fornecer ao InstallUtil.exe um comando de desinstalação para esse mesmo arquivo de serviço, o processo é concluído com o erro:
System.ComponentModel.Win32Exception: o serviço especificado não existe como um serviço instalado
De fato, o serviço existia antes da minha tentativa de desinstalar e reinstalar, embora não consiga encontrar nenhum vestígio dele agora no comando Get-Service do Powershell, nem nos arquivos Assembly, nem no registro. Acredito que isso foi acionado pela mudança do nome do serviço no software compilado sem uma desinstalação/reinstalação completa (como simplesmente substituir o executável). Minha pergunta é: o que posso fazer agora para diagnosticar o problema?
Responder1
A causa foi encontrada e determinada: outro desenvolvedor adicionou inadvertidamente um segundo instalador de serviço com exatamente o mesmo nome de serviço no projeto. (Ele não testou essa alteração, é claro.) O resultado líquido da tentativa de instalar dois serviços com exatamente o mesmo nome não foi refletido em nenhum dos logs de instalação ou do Windows, nem no prompt de comando quando o serviço foi instalado via comando linha.
Para fazer esse diagnóstico, eu mesmo acessei o código-fonte e alterei o nome do serviço. Quando reconstruído e instalado, dois serviços foram adicionados à lista de Serviços.
Responder2
No meu caso, descobriu-se que o nome genérico de "Monitor" que eu escolhi já existia. Criei um nome mais específico e tudo funcionou.