FolioPierEstudos de TI

Instalação de programas e dependências

Nota 11 de 20 · 6 min de leitura
Nesta página
  1. O que um instalador faz
  2. As dependências mais comuns
  3. O Visual C++
  4. O .NET Framework e o .NET
  5. Os erros de instalação
  6. A desinstalação

Um programa que instala sem erro e não abre, um sistema que pede um arquivo DLL que nunca foi copiado e uma versão nova que funciona em uma estação e falha em outra costumam depender do que a instalação deixou no computador. Além dos próprios arquivos, muitos programas dependem de componentes instalados à parte, e a falta de um deles só aparece na primeira execução.

O que um instalador faz

Um instalador copia os arquivos do programa, grava configurações no registro, cria atalhos, registra componentes e, às vezes, instala serviços e dependências. Os formatos mais comuns são estes:

  • MSI: o pacote do Windows Installer, com regras padronizadas de instalação, reparo e remoção;
  • EXE: um instalador próprio do fabricante, que pode conter um pacote MSI ou seguir regras próprias;
  • Pasta copiada: o programa funciona a partir de uma pasta, sem instalador, e as dependências precisam estar presentes no computador.

A instalação para todos os usuários grava em Program Files e na parte do registro que vale para o computador, e por isso exige a permissão de administrador. A instalação só para o usuário atual grava no perfil, em geral dentro da pasta AppData, e o programa não aparece para os outros usuários do computador.

A tela Programas e Recursos, aberta pelo comando appwiz.cpl, lista os programas instalados, com o fabricante, a versão e a data de instalação. Muitos programas oferecem ali a opção Reparar, que reinstala os arquivos e as configurações do registro, em geral sem remover os dados.

As dependências mais comuns

Muitos programas usam componentes que não fazem parte do próprio programa:

  • Visual C++: as bibliotecas usadas pelos programas feitos em C e em C++, instaladas por versão e por arquitetura;
  • .NET Framework: a plataforma dos programas .NET mais antigos, que acompanha o Windows;
  • .NET: a plataforma .NET atual, das versões 5 em diante, instalada separadamente;
  • Componentes do fabricante: bibliotecas, drivers e certificados exigidos pelo próprio sistema, listados no manual de instalação de cada versão.

Quando o sistema da loja é executado a partir da pasta compartilhada do servidor da loja, os arquivos do programa estão no servidor, mas as dependências ficam em cada estação. Por isso, o mesmo sistema, aberto da mesma pasta, pode funcionar no balcão 01 e falhar no caixa 01.

O Visual C++

Os pacotes do Visual C++ levam no nome o ano da versão das ferramentas usadas para criar o programa. Um programa feito com a versão 2010 precisa do pacote 2010, e as versões 2013 e anteriores têm pacotes separados, instalados lado a lado. Os programas feitos a partir da versão 2015 usam um único pacote, hoje chamado de Visual C++ v14, que atende as versões de 2015 a 2026.

O nome do arquivo que falta indica o pacote:

  • MSVCR100.dll: o pacote 2010;
  • MSVCR120.dll ou MSVCP120.dll: o pacote 2013;
  • VCRUNTIME140.dll ou MSVCP140.dll: o pacote v14, das versões 2015 em diante;
  • api-ms-win-crt-runtime-l1-1-0.dll: o componente de tempo de execução universal do C, que já faz parte do Windows 10 e do Windows 11 e falta no Windows 7 e no 8.1 sem as atualizações.

O pacote precisa ter a arquitetura do programa, e um programa de 32 bits usa o pacote x86, mesmo em um Windows de 64 bits.

O .NET Framework e o .NET

O .NET Framework 4.8 acompanha as versões atuais do Windows 10 e o Windows 11. As versões 4.x se substituem, e a 4.8 atende os programas feitos para as versões de 4.0 a 4.7. O comando a seguir mostra a versão instalada:

  • reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" /v Release: mostra um número de versão, em que um valor a partir de 528040 indica o .NET Framework 4.8 ou posterior.

O .NET Framework 3.5, que também atende os programas feitos para as versões 2.0 e 3.0, é um recurso opcional do Windows, ativado pela tela Recursos do Windows, aberta pelo comando optionalfeatures, ou pelo prompt de comando. A ativação baixa os arquivos pelo Windows Update e, em um computador sem esse acesso, usa a mídia de instalação da mesma versão do Windows:

  • dism /online /enable-feature /featurename:NetFx3 /all: ativa o .NET Framework 3.5 com os arquivos do Windows Update;
  • dism /online /enable-feature /featurename:NetFx3 /all /source:D:\sources\sxs /limitaccess: ativa o recurso com os arquivos da mídia de instalação, na unidade D.

O .NET atual tem versões que convivem no mesmo computador, e cada programa precisa da versão principal para a qual foi feito, como a 8 ou a 10. Os programas de tela usam o pacote chamado .NET Desktop Runtime, e a falta dele aparece em uma mensagem que pede a instalação do .NET na versão indicada. O comando dotnet --list-runtimes lista as versões instaladas.

Os erros de instalação

Um instalador MSI que falha mostra um número de erro:

  • 1618: outra instalação já está em andamento, como uma atualização do Windows, e a nova instalação precisa esperar;
  • 1925: falta a permissão de administrador para instalar para todos os usuários;
  • 1603: houve um erro fatal durante a instalação, sem a causa na mensagem.

O código 1603 exige o log da instalação, gravado pelo comando a seguir:

  • msiexec /i pacote.msi /l*v C:\Temp\instalacao.log: instala o pacote e grava um log detalhado no arquivo indicado.

No log, a primeira linha com o valor de retorno 3, Return value 3 nos registros em inglês, marca a ação que falhou, e as linhas logo acima mostram o motivo.

Uma instalação que pede reinicialização deixa arquivos para serem trocados na inicialização seguinte. Outra instalação feita antes da reinicialização pode falhar ou encontrar os arquivos antigos.

A desinstalação

A desinstalação pode deixar pastas de dados, configurações no perfil dos usuários e chaves no registro, e uma reinstalação pode encontrar a configuração antiga. Alguns desinstaladores, ao contrário, apagam a pasta inteira do programa, e por isso a pasta de configuração e os dados ficam preservados em uma cópia antes da desinstalação de um sistema.

No suporte

Diante de um programa que instala e não abre, convém ler o nome do arquivo citado na mensagem, porque ele indica o pacote que falta, e comparar a estação com outra em que o programa funciona. O pacote instalado precisa ter a arquitetura do programa, e uma instalação nova é feita com a permissão de administrador e sem outra instalação em andamento.

Para guardar

  • O instalador copia arquivos, grava no registro e pode instalar serviços e dependências.
  • A instalação para todos os usuários exige administrador, e a instalação por usuário fica no perfil.
  • O nome da DLL que falta indica o pacote do Visual C++, e o pacote v14 atende as versões de 2015 em diante.
  • O .NET Framework 4.8 atende os programas das versões 4.x, e o 3.5 é ativado como recurso do Windows.
  • As dependências ficam em cada estação, mesmo quando o sistema roda de uma pasta compartilhada.
O sistema da loja, aberto da mesma pasta compartilhada, funciona no balcão 01 e informa no caixa 01 que o arquivo MSVCP140.dll não foi encontrado. O que falta?

O pacote v14 do Visual C++ no caixa 01, na arquitetura do sistema. Os arquivos do sistema vêm do servidor da loja, mas as dependências são instaladas em cada estação, e o balcão 01 já tem o pacote.

A ativação do .NET Framework 3.5 falha em um caixa sem acesso à internet. Por quê?

Porque a ativação baixa os arquivos do recurso pelo Windows Update. Sem esse acesso, o comando dism com a opção de origem usa os arquivos de uma mídia de instalação da mesma versão do Windows.

Publicado a partir do Obsidian · FolioPier