Pergunta

Eu sou apenas um amador programador mais ou menos e têm crescido de codificação-sábios nos .NET ClickOnce do mundo.

Quando um "instala" um programa, o que realmente acontece?!

Também:Algumas pequenas aplicações/ferramentas de apenas executar a partir de um exe.Por que a maioria dos programas precisa de uma fantasia processo de instalação?Quais são as vantagens, desvantagens, prós & contras?É a instalação normalmente necessárias, ou mais como uma prática padrão?

Desculpas para as questões extras.Eu só estou esperando por um inglês simples, mais ou menos leigo explicação dos fatores-chave.

Foi útil?

Solução

Você está realmente olhando para muitas razões herdadas, tudo o que se tornou prática padrão no mundo do Windows.

Primeiro, algum contraste, porque nem sempre é assim. Um "aplicativo" no Mac OS X é simplesmente um diretório com uma certa estrutura dentro dele, nomeada com um .app extensão. A instalação de um aplicativo é tão simples quanto arrastá -lo (apenas o ícone do aplicativo) para a pasta de aplicativos, e a desinstalação envolve arrastá -lo para o lixo. É isso, nenhum instalador sofisticado é (geralmente) necessário.

No Windows, o aplicativo geralmente é construído a partir de componentes independentes que precisam ser "registrados". Isso envolve o programa do instalador escrevendo alguns bits e peças no registro do Windows, para informar ao Windows onde encontrar os componentes. Sim, o aplicativo provavelmente deve saber onde encontrá -los (já que estão todos instalados no mesmo lugar), mas anos de legado e diferentes maneiras de conectar componentes nos levaram onde estamos hoje.

Normalmente, um programa de instalação no Windows:

  • copia arquivos
  • registra componentes
  • Define as permissões de segurança (se apropriado)
  • Adiciona ícones ao menu Iniciar e/ou desktop
  • escreve mais coisas no registro para dizer ao Windows para adicionar o programa para "Adicionar e remover programas"

Outras dicas

O programa tenta modificar o computador de forma que ele funcione e todos os produtos concorrentes falhem. No Windows, isso significa:

  • Modificando as chaves arbitrárias no registro até ficar lento e cheio de entradas quebradas
  • Substituindo DLLs pela versão antiga que seu software pode usar
  • Espalhar o maior número de arquivos em tantos lugares quanto possível
  • Criando um script de desinstalação para manter a ilusão de que o usuário pode se livrar do software sem reinstalar o sistema operacional. No caso improvável de o usuário tentar executar esse script, você pode educá -lo para nunca fazer isso novamente com perguntas como "o arquivo .... pode ser usado por outros aplicativos. Você realmente deseja excluí -lo? Sim/não/talvez/qualquer resposta/todas as respostas estão corretas "
  • Instalando ganchos em locais obscuros para que seu software seja executado quando as botas do computador. Isso pode desacelerar o processo de inicialização, mas seu software começará em um instante, por isso é um preço pequeno a pagar ... para você.
  • Fazer coisas obscuras que demoram muito, mas ninguém pode dizer o que você faz (o que "a configuração está preparando a instalação" faça por 15 minutos?)
  • Verificando se existe espaço em disco suficiente, mas use números inteiros de 32 bits para garantir que ele não possa ser instalado em discos de 1 TB.
  • Uma tarefa importante é falhar com a instalação e imprimir o erro: "A instalação falhou. Isso pode ser porque existe um software antivírus instalado. Desative -o e tente novamente". Isso garantirá que os usuários comecem a desconfiar de seu antivírus (especialmente quando a instalação for bem-sucedida durante a segunda corrida, pois os bugs obscuros no instalador não foram acionados) e muitos deles esquecerão de permitir o scanner de vírus novamente ou até desinstalar a maldita coisa.

    Autores de vírus em todo o mundo também são pessoas! O spam compensa a maior parte do tráfego na internet, o que deve significar que é importante e quem não gostaria de fazer parte da maior comunidade do mundo? Além disso, você pode ganhar muito dinheiro dessa maneira. Tudo o que você precisa de uma consciência fraca e/ou alguma energia criminal.

  • Uma parte muito importante do seu instalador é aumentar a chave do registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-7-9-23-64738-1349283462-3754093625-4491\IsYourWindowWideEnough\NotGivenUpYetHuh\GoAway\ImportantSystemInformation\Let See How You Can Handle Spaces\DamnIGottaStopSincePathsCanHaveOnl\ReinstalCtr

    Esse importante contador do sistema ajudará a criar a ilusão de instabilidade para o usuário até que sintam um forte desejo de reinstalar todo o sistema. Isso ajudará a indústria profissional de TI a vender horas de suporte, vender novos computadores, mais RAM, discos duros maiores ou novas versões do Windows (eles devo Seja melhor, certo?).

Nota: Se você levar esse texto a sério, procure ajuda profissional.

As razões para usar um processo de instalação "sofisticado"

  1. Para gravar o processo de instalação para que possa ser reproduzido (reparo) ou desfeito (desinstalação)
  2. Para executar ações, Beyons simples cópia de arquivo (crie teclas de registro, registre componentes, execute outras ações arbitrárias

A opção "padrão" na maioria das instalações será "todos os bits geralmente desejados, em um local padrão, como os arquivos de programas" instalam sem personalização, possivelmente sem alguns recursos de nível especializado ativados.

A wikipédia nos diz que um típico programa de instalação cria ou modifica o seguinte:

  • Compartilhados e não compartilhados arquivos de programa
  • Pastas/diretórios
  • Entradas de registro do Windows (Windows apenas)
  • Entradas do arquivo de configuração
  • Variáveis de ambiente
  • Links ou atalhos

Então, se o seu programa precisa de uma ou mais das seguintes modificações, você deve criar um instalador que faz esse trabalho.

Depende do programa que você está instalando. Uma "instalação" pode variar de simplesmente copiar o executável (relativamente pequeno) para um diretório, a configuração de bibliotecas compartilhadas, fazendo verificações de níveis de patches (eu sou projetado para ser executado no SP2 ou superior - eu tenho sp2 ou superior?) E alterar o Configuração de sistemas, seja para o usuário atual ou para todos os usuários. A maioria deles também registra a instalação com um gerenciador de pacotes para que você possa desinstalar facilmente em um ponto posterior.

Um instalador resumos do processo de implantação de partes complexas de infra-estrutura de software, que normalmente é contidos dentro de um arquivo, através de uma prática auto-suficiente interface do usuário.

Esta INTERFACE pode ser gráfico ou baseado em texto, que é a saída de um comando de linha, tais como o shell do unix (por exemplo,bash).No caso da gráfica instaladores, na maioria das vezes um chamado de instalação-bootstrapper é usada, em último caso, a instalação de scripts que podem ser bash scripts Microsoft batch scripts, ou outro qualquer linguagem de script que é executado em uma linha de comando.

No caso mais simples um aplicativo é simplesmente um arquivo executável, com o sistema operacional saber o que fazer com o arquivo para executá-lo.O arquivo do aplicativo podem residir em uma pasta com subpastas e outros arquivos auxiliares, embalado em um arquivo.Neste caso, não installer podem ser necessários.

Para complexos de software, toda a plataformas de software e integração com o sistema operacional subjacente infra-estrutura pode ser desejável, por exemplo, para aplicar o direito autoral de um produto de software.

Muitos instaladores no Windows fornecem uma /e ou /extract bandeira.exemplo: setup.exe /e para permitir a extração do conteúdo do arquivo sem o programa de instalação a executar o seu script de instalação.Recentemente eu precisava para fazer que.

Mudanças na Mentalidade

Os instaladores têm quase se tornou uma norma para a entrega de software profissional, não importa o quão simples o software subjacente, os ativos.Com um número crescente de usuários de computador experientes e o desejo de migrar queridos aplicações a partir de um ambiente de trabalho para o próximo, o software portátil, muitas vezes entregues em um simples arquivo, está se tornando cada vez mais popular.

( Eu não sei quanto tempo no total eu gastei no instaladores, mas é, definitivamente, no fim dos dias.)

Tarefas o instalador pode lidar são:

  • remoção da embalagem (muitas vezes usando exóticas, de alta compressão arquivadores)
  • garantir requisitos de hardware do sistema
  • assegurar espaço suficiente no disco rígido
  • assegurar a plataforma de software de tempo de execução de requisitos (e.g.'redistributables')
  • conferir mais recentes atualizações de software
  • o download do software a partir de um repositório remoto
  • criar e/ou atualizar arquivos e pastas
  • criar configuração de arquivos, entradas de registro ou variáveis de ambiente
  • instalar drivers de software, montar ou desmontar os dispositivos
  • aumentar a acessibilidade para os usuários todos os dias, explicando as etapas de instalação, criação de links, atalhos de
  • promover o próprio software através de marcadores, etc...
  • criar incentivo para que o usuário realmente inicialização do software, apresentando os keypoints do software durante a instalação, slide por slide
  • criar receitas adicionais, através de software-agrupamento
  • configurar o kernel e módulos de execução automática de componentes (e.g.daemons, windows, serviços)
  • automático de aplicação de patches de software
  • configuração de pastas, arquivos e permissões de usuário
  • a criação de UUIDs referências para o casal de software para uma instalação de instância e impedir a portabilidade

PS:Se você pode pensar em outros pontos, deixe-me saber e eu vou incorporá-los.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top