Pergunta

Por alguma razão, nós estamos entregando um produto com a nossa própria instalação GUI, isso significa, vamos executar a instalação msi fundo silenciosamente.

Usando a API MSI "MsiInstallProduct", eu posso instalar o produto silenciosamente, mas não tenho idéia de como posso obter os dados de progresso desta instalação e como posso cancelá-lo.

Qualquer um tem algumas idéias?

Foi útil?

Solução

Aqui está um projeto de exemplo que aparece para fazer o que você está se referindo: http://www.codeproject.com/KB/cs/msiinterop.aspx

Outras dicas

Atualizar junho 2018 : Embora a ferramenta mostrada abaixo não é mais disponível para download, eu achei através de uma máquina Wayback. Presumo que é OK e legal para link para ele, vendo como a ferramenta era gratuito. links atualizados abaixo.

Atualizar : Esta ferramenta de Wise é, lamentavelmente, não descarregável mais . Eu não tenho certeza se ele é OK para distribuí-lo também. Parecia ser uma ferramenta gratuita distribuído como parte de sua suite principal Wise Package Studio, mas eu não acho que é open source. Eu gostaria que eles pudessem liberá-lo como uma ferramenta de código aberto.

Os produtos de embalagem sábios foram interrompidas devido a uma série de questões legais .


Eu acredito que você pode obter o progresso por meio da API MSI, mas se eu fosse você eu iria apenas mostrar a barra de progresso da própria MSI depois de invocar a instalação via msiexec.exe .

MSI suporta vários níveis de instalação diferentes (completo, completamente silencioso, GUI básica, reduzido GUI etc ...). No seu caso, parece que você quer uma interface de usuário básica. Isso resulta uma barra de progresso, onde pode ocultar o botão de cancelar, e, opcionalmente, mostrar uma conclusão diálogo modal:

Instale silenciosamente com barra de progresso, nenhum botão e sem diálogo modal no final cancelar:

msiexec.exe /I "Test.msi" /QB-!

Para evitar ter que construir estas linhas de comando msiexec parvo manualmente, utilizar a ferramenta comando msi linha construtor de Wise: http://www2.wise.com/filelib/WICLB.exe ( ressuscitou Wayback máquina ).

Por favor, execute o download por virustotal.com para a segurança.

enter descrição da imagem aqui


Relacionados :

Você precisa especificar um manipulador de interface do usuário externo usando MsiSetExternalUI ou MsiSetExternalUIRecord antes MsiInstallProduct (o último é mais agradável, mas tem uma maior exigência versão MSI). A função que você especificar será chamado para cada mensagem Windows Installer quer que você processar. Isto vai dar-lhe os dados, e uma chance de responder contá-la para cancelar. Se você precisar de MSI 4.5 ou posterior, você pode usar uma DLL manipulador UI externo incorporado, que não requer uma inicialização.

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