Diferença entre um arquivo executável independente e um executável instalado?

Diferença entre um arquivo executável independente e um executável instalado?

Percebi, pelo menos no Windows, que você pode baixar um arquivo executável direto e vinculado estaticamente e iniciá-lo diretamente, ou escrever seu próprio programa e executá-lo (mesmo dinamicamente) sem precisar instalá-lo.

Isso me leva ao ponto principal... qual é o propósito do processo de instalação? Quero dizer, além talvez doRegistro do Windows. No entanto, por questões de praticidade e uso, é possível ter um programa único, independente e autônomo que pode ser executado, armazenado em armazenamento não volátil e acessado através do sistema de arquivos de qualquer dispositivo em que esteja e executado no sistema operacional. Então, qual é o problema de todo esse negócio de “instalar isso” se muitos programas excelentes de praticamente qualquer magnitude podem funcionar perfeitamente sem passar por uma configuração de instalação? Isso me intriga um pouco e, além de um banco de dados ou outros sistemas de configuração de metadados/acesso, qual é a real diferença aqui se o último (um executável instalado) funciona e funciona da mesma maneira que um autônomo?

Há alguma diferença aqui que eu não conheço entre um programa não instalado e um instalado?

PS: Isso não precisa se aplicar apenas aos sistemas operacionais Windows, mas a qualquer um que implemente uma função semelhante.

Responder1

Existem vários motivos pelos quais os programas vêm como instaladores em vez de executáveis ​​independentes:

Preocupações com o tamanho do arquivo

  • Programas com muitas dependências grandes podem agrupar instaladores baseados na Web que baixam as dependências e as colocam em um local comum, para que possam ser compartilhadas por vários programas. Por exemplo, DirectX é uma biblioteca muito grande. Se todos os programas do seu sistema que dependem do DirectX incluíssem todo o tempo de execução do DirectX, isso consumiria uma boa quantidade de espaço. Isso pode não parecer importar na era dos discos rígidos de 4 TB, mas considere que os SSDs têm capacidade muito menor e estão se tornando de uso comum em ultrabooks, alguns com apenas 64 GB de armazenamento. E é claro que existem muitas outras bibliotecas compartilhadas além do DirectX.

  • Programas muito grandes e atualizados continuamente são melhor distribuídos como uma coleção de muitos arquivos pequenos, junto com um programa inicializador ou atualizador que verifica se há atualizações na Internet e, se houver alguma atualização, baixe apenas as alterações necessárias. Se todos os programas grandes fossem enviados como um único executável monolítico, é muito provável que o processo de patch exigiria o novo download de todo o executável, já que corrigir o arquivo executável em execução no disco é quase impossível devido a bloqueios de arquivo. Além disso, como o atualizador precisa saber onde estão seus arquivos, ele geralmente armazena esse caminho de diretório em um local conhecido no registro.

Preocupações com a conveniência do usuário

  • Instaladores de programas muito grandes, como Visual Studio e Microsoft Office, permitem ao usuário desmarcar a instalação de determinados recursos, caso saiba que nunca precisará deles. Isto tem três benefícios potenciais: reduz o consumo de espaço em disco; pode reduzir o tempo de download e o consumo de largura de banda se o instalador for um downloader da web; e pode reduzir a "desordem" e o "inchaço" na máquina do usuário, menos atalhos no menu iniciar/área de trabalho, menos programas de inicialização, etc.

  • Os instaladores de programas complicados geralmente vêm com opções de configuração que o usuário pode definir usando uma interface gráfica amigável como parte do instalador. Veja, por exemplo, os instaladores MySQL ou SQL Server, que podem guiá-lo por todo o processo de instalação e funcionamento do servidor de banco de dados antes mesmo de clicar em “Concluir” no instalador.

  • Os instaladores podem solicitar ao usuário as informações necessárias, como chaves de licença, que só precisam ser inseridas uma vez. Isso pode simplificar o design do próprio programa e reduzir o número de coisas que ele precisa fazer e verificar quando é inicializado. Isso também faz com que o usuário tenha confiança de que,uma vezo programa foi instalado com sucesso, ele deve "simplesmente funcionar" - não há mais "pegadinhas" no programa que possam impedi-los de usá-lo.

Preocupações de compatibilidade

  • Alguns programas entram em conflito com outros programas. Este é um fato simples e infeliz da engenharia de software. Antes de instalar um programa que apresenta conflitos conhecidos com outros programas, geralmente é útil verificar primeiro o sistema para ver se um programa incompatível está instalado. O usuário pode então ser alertado se assim for. Por exemplo, existe um potencial de incompatibilidade muito perigoso em versões mais antigas do VMware e do VirtualBox, que resultou em uma Tela Azul da Morte, porque um programa tentaria usar uma instrução especial do processador de virtualização depois de já ter sido reservada para o usuário pelo outro produto . Se você simplesmente fornecesse o produto final ao usuário sem um instalador, teria que verificar a presença de produtos incompatíveis emtodoinício do seu programa, o que pode retardar a inicialização do programa.

  • Os programas podem ter dependências de outros componentes do sistema que só podem ser instalados em todo o sistema e não por usuário. Para instalar esses componentes especiais do sistema, geralmente são necessários privilégios administrativos e um instalador geralmente precisa ser executado.

Privilégios elevados e serviços especiais

  • Alguns programas dependem de alterações no sistema operacional para sua funcionalidade, e essas alterações não podem ser implementadas facilmente sem algum tipo de instalador para cuidar delas com privilégios administrativos. Por exemplo, programas que instalam drivers ou módulos de kernel, como o Wireshark, não podemsimplesmenteser executado, porque você absolutamente precisa enviar os componentes do modo kernel em arquivos separados. Na melhor das hipóteses, você ainda teria que fazer com que o usuário descompactasse manualmente um arquivo e, em seguida, executasse algum tipo de instalador para o driver do dispositivo. Os serviços são outro exemplo de algo que requer privilégios administrativos para instalação. O software instalador é particularmente bom para obter direitos de administrador de maneira elegante, sem exigir que o próprio programa principal solicite direitos de administrador sempre que for executado (isso seria uma exposição de segurança desnecessária em muitos casos).

Tendo apresentado todas essas razões pelas quais os instaladores são úteis, aqui estão algumas observações do outro lado:

  • Muitos programas, mesmo aqueles que estão disponíveis apenas para download como um instalador que requer privilégios de administrador, podem ser “descompactados” à força de seus instaladores e executados diretamente, sem instalá-los. Outros programas, especialmente os de código aberto, são reempacotados em executáveis ​​independentes porAplicativos portáteis. Vale ressaltar quealgunsos programas, quando descompactados do instalador, terão funcionalidade reduzida, exibirão erros ou outros problemas.

  • Em sistemas operacionais diferentes do Windows, quase sempre é possível simplesmente baixar (ou compilar) programas e executá-los como um usuário normal, sem obter root. Existem algumas exceções em relação aos pacotes que são uma parte central do sistema operacional, mas para a maioria dos aplicativos de usuário, você pode executá-los em seu diretório inicial sem instalá-los em todo o sistema usando o gerenciador de pacotes. O Windows é um caso especial, pois a maioria dos programas de desktop no Windows possui um instalador e geralmente não pode ser instalado de outra maneira.

  • Mesmo em plataformas não Windows, os programas que precisam carregar um módulo do kernel vêm com algum tipo de instalador, que compila o módulo do kernel e o instala no diretório correto. Você também pode esperar ver um instalador caso o programa seja umdaemonque será iniciado usando um script de serviço do sistema, por exemplo, em /etc/init.d. Este tipo de "binário reduzido" é um método de distribuição menos comum no GNU/Linux, mas a maioria das distribuições Linux ainda fornece a maior parte do software na forma de pacotes instaláveis, cada um dos quais requer acesso root (acesso de administrador) para instalação.


Conclusões

Você perguntou por que precisamos de instaladores. A resposta curta é quenós não- não estritamente falando, de qualquer maneira. Existem poucos exemplos de aplicações quenão pode, em princípio, ser agrupado em um único executável independente, sem recursos, sem instalador, etc. Mesmo algo tão complicado como o VMware Workstation poderia obter automaticamente privilégios de administrador, gravar o módulo do kernel do hipervisor em um arquivo no disco e instalá-lo dinamicamente na inicialização do programa e envia todos os seus recursos (imagens, sons, etc.) agrupados dentro da seção de dados do executável.

Usar um instalador ou não é umaescolhaque os produtores de software têm que fazer. Existem vantagens e desvantagens em usar um instalador. Muitos fornecedores optam por distribuir seu softwareamboscomo instalador,ecomo um binário independente, ou pelo menos como um arquivo ZIP que pode simplesmente ser descompactado e executado. Para software que não requer absolutamente um instalador, esta é uma maneira muito pragmática de fazer isso e deixa todos felizes. Normalmente, o software que não é fornecido de outra forma que não seja um instalador é um software que requer privilégios administrativos para instalar algum componente de si mesmo, já que o instalador é a maneira mais elegante de obter os privilégios necessários.

Pessoalmente, acho os instaladores muito chatos no meu dia a dia de trabalho, porque às vezes quero executar um programa quando não tenho direitos administrativos no computador que estou usando. Tenho bastante experiência em descompactar instaladores manualmente para extrair os arquivos do programa e, em seguida, fazer com que esses arquivos sejam executados corretamente. No entanto, no meu PC pessoal em casa, onde sempre tenho acesso administrativo, considero os instaladores benéficos e convenientes, porque a maioria dos instaladores me oferece opções úteis, como criar um atalho na área de trabalho, que eu teria que fazer manualmente sem ele.

Responder2

O processo de instalação considera estes itens:

  1. se você possui a biblioteca necessária (API) instalada, como a versão do framework .net ou Direct X.

  2. Instale alguns arquivos DLL extras do sistema na pasta do sistema. Se a pasta do sistema já contiver esses arquivos (mesma versão), ignore esta etapa. Dessa forma, você não precisa de várias cópias dos mesmos arquivos DLL.

  3. Instale atalhos no menu Iniciar ou na área de trabalho para ajudá-lo a iniciar o aplicativo rapidamente.

  4. Como você disse, modificação do registro. Na verdade, esta etapa pode ser executada quando o aplicativo é executado pela primeira vez neste computador, portanto, não é muito importante.

  5. muito importante: incluir um software (como a barra do Google Desktop ou a barra do Yahoo! em seu IE). É assim que muitos softwares independentes geram receita para o desenvolvedor. Não se esqueça disso se estiver usando software livre.

Como estamos considerando um aplicativo "executável", não precisamos discutir as etapas que podem instalar um complemento do IE ou coisas relacionadas.

Responder3

O programa independente não possui dependências externas.

Não precisa ser apenas um arquivo .exe, pode ter bibliotecas e arquivos de dados: Descompacte o arquivo em uma pasta e execute o executável. Se você apenas descompactar um arquivo, nenhum atalho será adicionado ao menu Iniciar, portanto você terá que navegar até a pasta onde o aplicativo descompactado está localizado e iniciá-lo a partir daí, ou criar manualmente um atalho para ele no menu Iniciar. Muitos usuários de computador acham isso difícil.

Mais fácil de usar

Um instalador orienta os usuários durante o processo de instalação. Você baixa o instalador, .exe ou .msi (o primeiro é preferível para usuários não avançados) e executa-o. Ele pega a pasta de instalação, geralmente em Program Files, copia os arquivos, cria um atalho no menu Iniciar. Pronto: na maioria dos casos, basta clicar em Avançar várias vezes.

Em seguida, vá ao menu Iniciar e execute o aplicativo. Alguns instaladores oferecem a opção de iniciar o aplicativo quando a instalação for concluída.

Se o aplicativo abrir arquivos ou documentos de determinado tipo, o instalador os registrará no shell. Para que você possa clicar no arquivo para abri-lo.

Contrato de licença

Muitos aplicativos, tanto comerciais quanto gratuitos, exigem que você aceite o contrato de licença antes de poder usá-los. A instalação não prossegue até que você confirme que concorda com os termos da licença. Mesmo que você não tenha lido a licença, você concordou com ela.

Dependências

Às vezes não basta simplesmente copiar os arquivos executáveis. Os aplicativos geralmente usam componentes compartilhados ou bibliotecas de tempo de execução especiais. Por exemplo, o tempo de execução do framework .Net deve ser instalado para executar o aplicativo escrito para .Net; até mesmo o tempo de execução do Visual C++, se não estiver vinculado estaticamente, deverá ser instalado. O instalador se encarrega de garantir que todas as dependências sejam satisfeitas.

Se um aplicativo consistir em vários arquivos .exe e/ou .dll, a vinculação dinâmica ao tempo de execução do Visual C++ reduzirá o espaço em disco. Se .exe e .dll estiverem vinculados estaticamente, o tempo de execução será duplicado em cada arquivo.

Os termos de licença de uma biblioteca podem não permitir links estáticos.

Segurança

Se uma vulnerabilidade for encontrada no tempo de execução, ela poderá ser atualizada separadamente do aplicativo. As atualizações do tempo de execução .Net e Visual C++ são instaladas automaticamente por meio do Windows Update.

Se os executáveis ​​e as bibliotecas estiverem vinculados estaticamente, o fornecedor do aplicativo deverá recompilar o aplicativo e lançar a versão atualizada. Portanto, o uso do tempo de execução compartilhado reduz o custo de manutenção de aplicativos para desenvolvedores e fornecedores.

A instalação Program Filestambém fornece um ambiente mais seguro: os arquivos não podem ser modificados ou excluídos sem privilégios de administrador.

Registro

Muitos aplicativos do Windows dependem de entradas no registro. Se o aplicativo usar COM, todos os objetos deverão ser registrados, caso contrário o aplicativo não conseguirá criar o objeto necessário e não será iniciado.

Responder4

Resposta breve: um exe independente não requer a instalação de bibliotecas no computador para ser executado e não requer entradas de registro ou outros componentes.

Um arquivo instaladopodeser independente em um pacote de instalação, mas geralmente depende de uma variedade de componentes e bibliotecas instaladas junto com ele.

Em muitos casos, atravésExtrator Universal(atualização não oficial:aqui), você pode extrair o conteúdo de um instalador e executar um programa sem privilégios administrativos no Windows. Os instaladores MSI podem ser descompactados commenosmsi.

Na maioria dos outros sistemas operacionais, todos os programas podem ser executados sem privilégios de root/administrador, por meio de 'bin', 'lib' específicos do usuário e outros diretórios no diretório inicial. Pessoalmente, na maioria das vezes desprezo os instaladores, porque eles dificultam o uso de programas sem privilégios administrativos quando não os tenho. Mas eles são embalados dessa forma por grandes empresas para simplificar o processo para o usuário final médio.

informação relacionada