quinta-feira, outubro 30, 2008

Problemas com o Windows Update

O Windows Update é certamente um recurso muito útil e poderoso do Windows. Na maioria dos casos ele permite manter o seu sistema operacional atualizado com um mínimo de esforço. Exceto, é claro, quando algo dá errado.

As Atualizações do Windows

Como já comentei antes, a Microsoft normalmente disponibiliza novas atualizações uma vez por mês, no chamado Patch Tuesday. Ocasionalmente saem os cumulative patches que substituem um conjunto de patches distintos para um mesmo componentes do Windows. Bem mais esporadicamente temos os Service Packs, que acumulam uma grande quantidade de correções e atualizações.

No dia-a-dia temos duas formas de manter o nosso sistema atualizado:
  • usar o Automatic Update, que verifica periodicamente a disponibilidade de novas atualizações. Dependendo do seu coeficiente de confiança/pregiça, você pode optar para o Automatic Update apenas notificá-lo da presença das atualizações, baixar mas perguntar antes de instalar ou baixar e instalar sem perguntar nada. O download é feito de forma a minimizar o impacto no uso normal do micro e da internet (veja detalhes no meu post anterior), o que acarreta em uma "falta de pressa".
  • usar o Windows Update, que é um site que interage com um controle ActiveX no seu PC para verificar as atualizações disponíveis e possibilita baixar e instalar sob demanda.
A primeira opção é, na maioria dos casos, a mais apropriada. Uma exceção é se você não tem conexão contínua com a internet. Outra, que foi o meu caso, se você está querendo atualizar um micro novo.

O Meu Problema

Estou trocando o meu micro no trabalho e portando partindo de um XP SP2 "zerado". A partir de um certo ponto as instalações passaram a dar a seguinte singela mensagem de erro:

Problema: Um problema no seu computador está impedindo que as atualizações sejam baixadas ou instaladas
Solução: Para corrigir o problema, tente instalar as atualizações novamente. Se isso não funcionar, use a Solução de Problemas para tentar solucionar o problema.

Óbvio que tentar novamente deu o mesmo resultado e a Solução de Problemas não deu nenhuma dica útil.

Resolvendo o Problema

Como Santo Google informa, este problema não é totalmente incomum (como veremos, no meu caso foi uma falha conhecida bastante fácil de ser duplicada) e existem várias discussões a respeito. Só para citar duas:
É claro que o caminho que eu segui foi bem tortuoso, mas vou dar aqui a ordem correta.

O primeiro ponto importante é olhar o log do Windows Update, que fica em C:\WINDOWS\WindowsUpdate.log. Como todo bom log, foi feito para ser lido pelo programador, não pelo usuário. De qualquer forma a informação que interessa é a seguinte:

Handler Attempting to create remote handler process
Process: C:\WINDOWS\system32\wuauclt.exe
FATAL: Error: 0x80004002. wuauclt handler: failed to spawn COM server
Handler FATAL: 0x80004002: ERROR: Remote update handler container process created (PID: 3036), but exited before signaling event

Se você estiver enfrentando este problema e as mensagens no log forem como estas, é bem provável que a solução que apresento a seguir resolva o problema.

A mensagem fala em um erro ao disparar um COM server. COM é a tecnologia de componentes da Microsoft e ela se baseia fortemente em informações armazenadas no registry. O motivo mais comum para problemas é um módulo COM não estar devidamente registrado.

Embora a mensagem acima não informe isto, o problema é o registro de wups2.dll. Para registrar corretamente esta DLL basta:
  • parar o serviço de atualizações automáticas
  • registrar a DLL usando o regsvr32
  • reiniciar o serviço de atulaizações automáticas
Os forums mencionados acima tem as instruções passo-a-passo. De forma resumida, você pode abrir uma janela de comando e executar os comandos abaixo:

net stop wuauserv
regsvr32 %windir%\system32\wups2.dll
net start wuauserv

Entendendo a Falha

A Microsoft tem um artigo curto mas bem detalhado sobre o assunto em http://support.microsoft.com/kb/943144

Existe duas formas fáceis de você obter o problema acidentalmente:
  • você reparou uma instalação do XP a partir do CD original. O reparo deixa a DLL no disco mas apaga as informações do registry
  • você estava com o XP SP2, foi no Windows Update, atualizou o client do Windows Update e logo em seguida baixou e instalou o SP3. Por uma falha da Microsoft, você não é orientado a reiniciar o micro após atualizar o client. O novo client é instalado mas não registrado; o SP3 registra o client antigo. Foi o que aconteceu comigo.
Um Conserto para Outros Problemas

Antes de descobrir o problema real eu estava desconfiado de ter algo corrompido nos arquivos baixados. Nos forums acima tem instruções detalhadas da própria Microsoft de como limpar os arquivos que foram baixados pelo Windows Update mas ainda não instalados. De forma resumida:
  • limpar todo o cache do Internet Explorer (o procedimento é diferente para o IE6 e IE7)
  • parar os serviços de Atualizações Automáticas e Criptografia
  • apagar a pasta C:\Windows\SoftwareDistribution
  • renomear a pasta C:\Windows\\System32\catroot2
  • reiniciar os serviços de Atualizações Automáticas e Criptografia
Após isto uma visita ao Windows Update permitirá baixar novamente as atualizações que ainda não foram instaladas.

Balançando Galinhas Mortas

Entre as sugestões existem alguns rituais que, salvo prova em contrário, me parecem pouco contribuir para solucionar o problema. A menção mais comum é desligar antivirus e outros programas. Embora esta sugestão ajude a desconsiderar uma possível causa de erro, é pouco provável que um antivirus conhecido interfira no Windows Update. Principalmente quando o Windows Update pára de funcionar após algumas atualizações dele próprio.

Nenhum comentário: