Automatizando a instalação de vários aplicativos

4

Estou tentando descobrir uma maneira confiável de agrupar vários aplicativos que podem usar software de instalação diferente (InstallShield, instalador do MS Service, Wise, etc) e automatizar a instalação de todos de alguma forma. Eu não vi nenhum produto lá fora que faça isso de maneira confiável. Aqui está o que eu gostaria de fazer:

  1. Instale vários aplicativos que podem usar diferentes instaladores.

  2. Instale aplicativos sem exigir interação manual para cada aplicativo. Eu prefiro uma opção no instalador principal para ter uma opção personalizada, onde você pode selecionar os aplicativos que você deseja e basta clicar em "Instalar" e tê-lo instalar esses aplicativos (mas sem aparecer a instalação para esses aplicativos)

  3. Faça com que o instalador principal apareça apenas no menu Adicionar / Remover programas do Windows, para que, quando esse aplicativo for removido, todos os aplicativos instalados também sejam removidos.

  4. Controle os parâmetros de instalação para cada aplicativo incluído, de modo que eles possam ser instalados em uma estrutura de diretório relacionada lógica. Por exemplo, instalando todos os aplicativos em uma pasta Program Files \ Bundled App Set.

Pelo que pesquisei, há apenas algumas maneiras de fazer isso:

  1. Instalação externa, que simplesmente iniciava o instalador de cada aplicativo e exigia interação manual para cada instalador (mas que quebra quase todas as metas acima, mas pelo menos instalaria todos os aplicativos escolhidos após a interação)

  2. Instalação não assistida / silenciosa, presumindo que cada instalador o suporte por meio de um arquivo de resposta ou sinalizadores passados para o instalador.

  3. Reempacotando instalações usando um software que possa rastrear alterações em um sistema durante uma instalação e registre as alterações que serão reempacotadas em um novo instalador. Eu li isso não é muito confiável e tende a quebrar com freqüência. Pode ter problemas ao detectar itens como serviços adicionados ao Windows.

Há também uma quarta opção usando módulos de mesclagem, mas isso só funcionaria se todos os aplicativos usassem o mesmo serviço de instalação do MS. Eu não listei isso por causa disso.

Esta é realmente uma questão para opiniões sobre a melhor maneira de fazer isso. Alguns softwares que eu tenho acesso e posso reembalar, e outros softwares que não tenho. Eu preferiria não ir com um sistema híbrido, como usar # 1 e # 2, mas se for preciso, preciso.

Eu imagino que haja alguma maneira de fazer isso direito, e estou aberto a quaisquer opiniões ou sugestões para fazer algo como isso funcionar - e espero que não seja incrivelmente frágil no final. Talvez não seja possível? Qualquer ajuda é apreciada. Obrigado.

    
por Mark Henderson 11.11.2009 / 02:49

5 respostas

3

Eu tenho usado uma técnica ao longo das linhas da solução de pjhayward por anos. Nossa empresa utiliza centenas de programas diferentes, alguns de grandes fornecedores comerciais e outros de empresas de um único fornecedor. As proficiências técnicas desses fornecedores estão em todo o mapa, especialmente quando se trata de projetar instaladores.

Considero os MSIs fornecidos pelo fornecedor o padrão-ouro (embora ainda haja muita variação nos designs de pacotes). Usando a ferramenta Orca da Microsoft (incorporada em um ou mais de seus SDKs de plataforma, acredito), é bem fácil criar arquivos Transform para coagir esses pacotes em nosso layout típico. Nós personalizamos o menu Iniciar para agrupar programas por categoria funcional, mudamos o diretório de instalação para agrupar aplicativos por fornecedor dentro da pasta Arquivos de Programas e banimos todos os atalhos da área de trabalho. Números de série e endereços de servidor de licença são aplicados, se apropriado, talvez um serviço de atualização automática esteja desativado, etc.

O maior benefício do uso de MSIs é que a Diretiva de Grupo da Microsoft (que funciona através do Active Directory e está incluída em todas as licenças do Windows Server) pode implantar esses pacotes, com suas transformações, em grupos designados automaticamente ou por solicitação do usuário. Usamos o método automático, atribuindo aplicativos de uso geral a todas as máquinas, aplicativos de CAD para aqueles que podem usá-los, aplicativos da Adobe para máquinas específicas (licenciamento estúpido por estação) etc. Detalhes disso seria uma questão de SF separada. , se ainda não foi perguntado e respondido.

Para muitos, muitos instaladores que não estão no formato MSI, passamos por um processo de reempacotamento semelhante ao do pjhayward. A desvantagem mais significativa de fazer isso é que a instalação reempacotada perde qualquer inteligência incorporada ao instalador original. A sensibilidade às diferenças de plataforma (digamos, sistemas de 32 ou 64 bits) será prejudicada, possivelmente exigindo reempacotamentos adicionais para cobrir cada plataforma. As decisões sobre a instalação e / ou atualização de componentes de terceiros serão feitas com base na máquina de amostra, independentemente dos diferentes estados iniciais das máquinas de destino. Etc.

Falando em componentes de terceiros: Fazemos todos os esforços para instalar cada componente em um pacote separado, independentemente dos desejos frequentes dos fornecedores de agrupar tudo. Sua estratégia faz sentido para uma única pessoa instalar um punhado de produtos de software manualmente em sua própria máquina, mas é interrompida no caso de instalações automatizadas de muitos nós e muitos produtos. Não importa quantos fornecedores dependam do MSXML 6 ou de alguma ferramenta de gerenciamento de licenças obscura, instalamos cada um deles uma vez, normalmente antes de instalar os produtos com os quais foram distribuídos. Isso também nos ajuda a minimizar os downgrades inadvertidos de versões, já que podemos dizer facilmente se a versão empacotada é mais antiga ou mais recente do que a que já estamos implantando.

Usamos o WINinstall da Attachmate, que foi distribuído de forma simples com os CDs do Windows Server 2003. Temos uma licença do produto completo, mas a versão LE, em combinação com o Orca e o ocasional suplemento incorporado vbscript, foi suficiente para as minhas necessidades. Os comentários de Evan Anderson sobre o WINinstall são válidos, mas pudemos viver com suas verrugas.

A lista de pjhayward (atualmente) passa por cima de uma etapa crítica: Limpar o pacote de instalação capturado antes de usá-lo para executar instalações em outro lugar. Arquivos indesejáveis e entradas de registro são frequentemente coletados como parte do processo de captura, e é importante identificá-los e removê-los antes que eles causem danos nas instalações subseqüentes. Procure por coisas como chaves de registro de estado sequenciais que podem estar completamente erradas para uma máquina que está sendo executada há algum tempo, e arquivos de cache do Serviço de Indexação ou do Windows Update que são criados no meio da captura.

Por favor, note que o licenciamento está fora do escopo da minha resposta, mas é bastante relevante para este tipo de cenário. As técnicas de distribuição a granel devem ser equilibradas com a conscientização dos direitos de uso reais concedidos pelos contratos de licença de cada produto.

Espero que isso ajude. É talvez mais do que você está perguntando, e não é uma combinação perfeita para a abordagem de implantação que sua pergunta descreve, mas é uma solução que achamos viável há muitos anos.

    
por 11.11.2009 / 06:44
1

Quando você está lidando com um software para o qual você não tem o código para a configuração, realmente não há uma "resposta certa".

Você pode ter considerações sobre contrato de licença se estiver fazendo isso com um software de terceiros. O Server Fault não é um advogado, mas se isso é para algo que você vai distribuir fora da sua organização, eu o deixo de olho no seu conselho.

"Repackaging" significa coisas diferentes para pessoas diferentes. Na minha opinião, isso significa construir um novo programa de instalação para o aplicativo de outra pessoa. Normalmente, esses são pacotes MSI, mas poderia ser facilmente outro sistema de instalação. Isso pode ser feito com ferramentas automatizadas, "manualmente" ou com alguma combinação dessas estratégias.

O reempacotamento usando ferramentas automatizadas pode criar instalações que funcionam perfeitamente ou que estão irremediavelmente danificadas. Usar uma ferramenta de reembalagem às cegas, sem examinar cuidadosamente o pacote que ela cria, pode levar a uma grande bagunça. Algumas ferramentas (Wininstall LE, estou olhando para você) criam arquivos MSI realmente feios por padrão (um arquivo por componente, tudo um caminho chave).

Reempacotamento "à mão" através de engenharia reversa as "intenções" do autor do programa de instalação original pode fazer para instalações reembaladas mais limpas, mas você tem que realmente cavar e descobrir se o programa de instalação original tem comportamento que você é não vendo na sua máquina de teste. Isso acaba sendo um exercício de engenharia reversa (e, possivelmente, frustração).

Se você conseguir trabalhar com configurações autônomas para os aplicativos necessários, acho que você terá a configuração mais limpa. Se você está preocupado com a lista Adicionar / Remover Programas (ARP), então eu suponho que você poderia fazer com que seu instalador "shell" modifique as entradas de registro ARP após cada instalação de terceiros ser concluída para remover suas entradas. (Pessoalmente, deixo as entradas ARP em paz ...)

Eu ficaria extremamente cauteloso, se este produto é destinado ao uso de COTS, que você detecta instalações existentes dos programas de terceiros que você está instalando e lida adequadamente com ele. Estou me lembrando de um velho software educativo que eu costumava lidar com o que trash cegamente qualquer versão do QuickTime instalado e substituí-lo por alguma versão feia do Win16, quer eu goste ou não. Ugh ...

Se você estiver distribuindo isso fora de sua organização e outros administradores de sistemas (como, digamos, eu) tiverem o potencial de precisar lidar com isso, leve em consideração nossos interesses. Gostaríamos de poder instalar seu produto silenciosamente e gostaríamos de poder manter os componentes de terceiros que você instala.

    
por 11.11.2009 / 04:44
1

A única opção realmente viável para alcançar todos os seus objetivos é a opção # 3.

O principal motivo pelo qual o reempacotamento normalmente não é confiável é que, quando os aplicativos são originalmente instalados, todos eles são instalados no mesmo sistema, sem desinstalar os outros aplicativos primeiro. Isso significa que você acaba com uma dependência de sequência para garantir que tenha todas as bibliotecas compartilhadas corretas instaladas.

Se o aplicativo A instalado myLib.dll versão 1.0.0.1 e o aplicativo B usar a mesma versão, o sistema de detecção de alterações não reconhecerá que o aplicativo B requer myLib.dll, a menos que mantenha uma cópia na pasta do programa . Isso é especialmente problemático para aplicativos que usam bibliotecas redistribuíveis da Microsoft, que podem ou não estar na máquina de destino para começar. A maioria dos aplicativos que usam bibliotecas personalizadas tendem a mantê-los na pasta do programa.

Para que a opção 3 funcione remotamente de maneira confiável, aqui está o que eu faria:

  1. Crie uma máquina virtual para instalar os vários aplicativos. A maioria dos softwares de VM com os quais estou familiarizado permitirão que você configure suas unidades virtuais de maneira que você possa decidir se deve ou não confirmar as alterações na imagem da unidade virtual. Depois de ativá-lo, ative o recurso.

  2. Inicie o software de detecção de alterações.

  3. Instale ONE application / update / whatever, certificando-se de instalá-lo em Program Files \ BundledAppsWhatever

  4. Remova a entrada de registro que colocaria o aplicativo no painel de controle de adicionar / remover

  5. Finalize o processo de detecção de alterações.

  6. Mova o aplicativo reempacotado para sua máquina física.

  7. Redefina o disco de undo da VM, para que você tenha um sistema limpo.

  8. Repita os passos 2-7 conforme necessário.

Agora, com tudo isso dito, não estou a par das ofertas atuais para soluções de reempacotamento, por isso não conheço nenhuma que ofereça a flexibilidade que você deseja para adicionar e remover programas da maneira que você descreveu.

    
por 11.11.2009 / 04:56
1

Se a sua empresa for grande o suficiente (ou seja, o orçamento de TI é "enorme"), existem vários produtos que funcionam nesse sentido.

Se você está procurando por algo para ambientes de pequeno e médio porte, você estará procurando encontrar os sinalizadores de instalação e, em seguida, codificar o envio de alguma forma.

    
por 11.11.2009 / 05:41
0

talvez você devesse experimentar o Npackd ( link )

    
por 21.11.2010 / 17:55