Como automatizo as instalações de um MSI?


11

Eu tenho cerca de 20 aplicativos que precisam ser executados em uma ordem específica. Quero escrevê-los para que eu possa fazer isso remotamente.

Cada um dos aplicativos possui um Setup.exe e um MSI.

Eu esperava apenas ter um script simples que chamasse os MSIs com um arquivo de resposta, mas já faz anos desde que eu o faço. No entanto, não me lembro como criar um arquivo de resposta.

Essa é uma boa maneira de fazer isso? Ou haveria uma maneira mais simples?

Respostas:


17

Fale sobre uma pergunta carregada ...

Para iniciantes, ignore o setup.exe. As probabilidades são apenas de chamar o MSI. Ou, às vezes, eles extraem um monte de coisas. ENTÃO, chame o MSI, geralmente você pode assistir ao seu diretório temporário ao executar a instalação e ter uma idéia do que está fazendo.

Eu sempre trapacei e fiz uma instalação seca ( msiexec /i path/to-install.msi /l*v /qn) com o registro acionado, depois passei pelo registro e selecionei as propriedades que eu queria definir e defini-las através da linha de comando. Os arquivos de resposta nunca funcionaram ou não valiam a pena passar pelo processo para criá-los.

Então eu encontrei InstEdit e usei um barco. Ele permitirá que você edite as propriedades de um MSI e gere uma transformação que você pode transmitir como argumento em seu script: msiexec /i path/to/installer.msi /t path/to/transform.mst eu recomendo dar uma chance primeiro, há uma versão gratuita que faz quase tudo.

Você também pode dar uma olhada aqui para todos os switches msiexec.


+1, mas infelizmente os comutadores parecem não funcionar com todos os MSIs. Ainda não analisamos o porquê, mas é definitivamente o caso de alguns.
Ciaran

Depende de como o MSI foi criado. Existem algumas propriedades que você pode definir para ignorar determinados parâmetros, IIRC. Normalmente, usando o Instedit e construindo uma transformação sempre funcionava, os únicos erros que encontrei eram geralmente humanos.
22411 peelman


1
O método de log funcionou para mim. É importante notar, porém, que as propriedades serão listadas comoProperty(S) : PROPERTY_NAME...
de Drew Chapin

5

Msiexec é a ferramenta que você precisa. Ele possui um parâmetro -q para instalar coisas "quiet":

/ qn: não exibe interface do usuário.

/ qb: exibe uma interface de usuário básica.

/ qr: exibe uma interface de usuário reduzida com uma caixa de diálogo modal exibida no final da instalação.

/ qf: exibe a interface do usuário completa com uma caixa de diálogo modal exibida no final.

/ qn +: não exibe interface do usuário, exceto por uma caixa de diálogo modal exibida no final.

/ qb +: exibe uma interface básica do usuário com uma caixa de diálogo modal exibida no final.

/ qb-: exibe uma interface de usuário básica sem caixas de diálogo modais.

Você também pode fornecer opções nomeadas (ou "propriedades") no final da linha de comando; quais propriedades são suportadas depende do pacote. Por exemplo, este comando:

msiexec /qb /l* perl-log.txt /i ActivePerl.msi PERL_PATH=Yes PERL_EXT=Yes

... é como você instala o ActiveState Perl, instruindo o pacote MSI a adicionar Perl.exe ao PATH e a associar arquivos .pl a ele. ( fonte )


1
Observe que um desenvolvedor pode optar por desabilitar a opção / q em seu instalador msi.
Joel Coehoorn

2

A maioria dos aplicativos pode ser instalada silenciosamente e, portanto, com scripts. Cada Setup.exe pode ter várias opções em potencial, portanto, é necessário ligar para o fornecedor ou pesquisar em seu site. Às vezes, você pode obter as informações iniciando a instalação com uma opção / ?, / h / help. Os arquivos MSI também podem ter qualquer número de opções, mas este artigo Os parâmetros da linha de comando MSI fornecem uma lista.

Ao criar um script do processo, você pode executar um aplicativo instalado com o setup.exe e, em seguida, iniciar outro arquivo como um MSI. Um exemplo foi o MS Office XP. Quando isso ocorre, seu script pode pensar que o arquivo que você lançou está completo e iniciar a próxima instalação que falhar, fazendo com que tudo vá para o sul. Para contornar isso, tente ignorar o arquivo de instalação e vá direto para o instalador real (potencialmente um MSI) com opções de linha de comando. Se isso não for possível, pode ser necessário criar algum tipo de pausa no temporizador. Eu costumava usar um pequeno utilitário chamado wait.exe que encontrei na internet, mas existem milhões de maneiras de fazer isso. A chave para o script é poder identificar se um aplicativo foi instalado corretamente para que a próxima instalação possa começar.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.