Instalação e desinstalação de serviços

Serviços do Windows: instalação e desinstalação pela linha de comando InstallUtil.exe e solução de problemas comuns

1. Instalar e desinstalar serviços do Windows pela linha de comando

1. Ferramenta

A Microsoft disponibiliza o InstallUtil.exe para instalar e remover serviços do Windows desenvolvidos em .NET.

  1. O InstallUtil.exe varia conforme a versão do .NET Framework. Se a versão da ferramenta não combinar com o framework‑alvo do projeto, a instalação irá falhar;
  2. Você precisa copiar a versão correta do InstallUtil.exe para a pasta de saída Debug do serviço (mesmo diretório do executável do serviço).

A ferramenta InstallUtil faz parte do SDK do .NET. Cada versão instalada do SDK traz uma versão diferente desse utilitário.

.NET Framework 4.0 / 4.5 / 4.6 / 4.7 / 4.8 (mais utilizadas) tem versões separadas para 32 e 64 bits.

Exemplo de caminho da versão 64 bits: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe

.NET 5 /.NET 6 /.NET 7 /.NET 8 /.NET 9 (linha .NET Core) não vem com o InstallUtil.exe

2. Estrutura de pastas (pasta Debug)
WindowsServiceDemo.exe       // Executável principal do serviço Windows
WindowsServiceDemo.pdb
InstallUtil.exe             // Ferramenta de instalação copiada
install.bat                 // Script de instalação
uninstall.bat               // Script de desinstalação
log.txtCode language: JavaScript (javascript)
3. Criar scripts de lote

install.bat 【Instalar serviço】

d:
cd D:\WindowsService3\WindowsService3\bin\Debug
InstallUtil WindowsServicePicture.exe
pauseCode language: CSS (css)

uninstall.bat 【Desinstalar serviço】

d:
cd D:\WindowsService3\WindowsService3\bin\Debug
InstallUtil /u WindowsServicePicture.exe
pause

Explicação do parâmetro: /u = uninstall, usado para remover o serviço

É necessárioclicar com o botão direito e executar o CMD como administrador ou rodar o arquivo bat diretamente com privilégios de administrador. Sem permissões suficientes, uma exceção de segurança é lançada, a instalação falha e é revertida automaticamente.

2. Problemas comuns na instalação de serviços do Windows e soluções

Resumo das causas principais

Dois motivos principais para falha na instalação:

  1. Incompatibilidade entre a plataforma de compilação do projeto, versão do .NET e a versão do InstallUtil.exe;
  2. Falta de privilégios de administrador, acionando bloqueio de segurança do sistema.
Exceção 1: BadImageFormatException

Mensagem de erro

System.BadImageFormatException: Não foi possível carregar o arquivo ou assembly "WindowsServiceDemo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" ou uma de suas dependências. Tentativa de carregar um programa com formato incorreto.Code language: JavaScript (javascript)

Causa
A arquitetura da plataforma‑alvo de compilação (x86/x64/AnyCPU) não corresponde ao bit do InstallUtil.exe ou há incompatibilidade de versão do .NET.
Soluções

  1. Configure o projeto para compilar com a opção x86;
  2. Use a versão do InstallUtil.exe correspondente ao framework do projeto;
Exceção 2: SecurityException, erro de permissão de segurança (muito frequente)

Mensagem de erro

Ocorreu uma exceção durante a fase de instalação.
System.Security.SecurityException: A origem não foi encontrada, mas parte ou todos os logs de eventos não puderam ser pesquisados. Log inacessível: Security.

Iniciando a fase de reversão da instalação.
A instalação falhou e a reversão foi executada.Code language: CSS (css)

Exemplo de caminho completo do log:

H:\CodigoFonteProjeto\WindowsServiceDemo\WindowsServiceDemo\bin\Debug\WindowsServiceDemo.InstallLogCode language: CSS (css)

Causa raiz
O terminal de comando ou o Visual Studio não está rodando como administrador e não consegue ler e gravar os logs de eventos do sistema.

Soluções padrão

  1. Visual Studio: botão direito Executar como administrador, abra o projeto e recompile;
  2. CMD / script bat: botão direito → Executar como administrador;
  3. Selecione a plataforma de compilação x86 para gerar o projeto.
Sinal de instalação bem‑sucedida

Saída do console:

A fase de confirmação foi concluída com sucesso.
A instalação transacional foi finalizada.

Abra a lista de serviços do Windows (services.msc) e você verá o serviço recém‑registrado.

Instalação e desinstalação de serviços

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *