Pergunta

Qual é a melhor maneira de encerrar um programa e executar código adicional do programa que está sendo encerrado?Por exemplo, qual seria a melhor maneira de um programa se atualizar automaticamente?

Foi útil?

Solução

Você tem algumas opções:

Você poderia usar outro aplicativo .exe para fazer a atualização automática.Este é provavelmente o melhor método.

Você também pode renomear o exe de um programa enquanto ele está em execução.Assim, permitindo que você obtenha o arquivo de algum servidor de atualização e substitua-o.Na próxima inicialização do programa ele estará utilizando o novo .exe.Você pode então excluir o arquivo renomeado na inicialização.

Outras dicas

Seria realmente útil saber de que idioma estamos falando aqui.Tenho certeza de que poderia lhe dar ótimas dicas para fazer isso no PowerBuilder ou Cobol, mas pode não ser isso que você procura!No entanto, se você estiver falando Java, poderá usar um gancho de desligamento - funciona muito bem para mim.

Outra coisa a considerar é que a maioria dos "principais" aplicativos que tenho usado (FileZilla, Paint.NET, etc.) fazem com que os atualizadores desinstalem a versão anterior do aplicativo e, em seguida, façam uma nova instalação da nova versão. do aplicativo.

Entendo que isso não funcionará para aplicativos realmente grandes, mas parece ser um processo "preferido" para aplicativos de pequeno e médio porte.

Não sei como fazer isso sem um segundo programa que o programa principal inicia antes de desligar.O Programa 2 baixa e instala as alterações e, em seguida, reinicia o programa principal.

Fizemos algo assim em nosso aplicativo anterior.Capturamos o encerramento do programa (no .NET 2.0) a partir do botão X ou do botão Fechar e, em seguida, iniciamos um processo de atualização em segundo plano que o usuário não viu.Ele verificaria o servidor (aplicativo cliente-servidor) em busca de uma atualização e, se houvesse uma disponível, faria o download em segundo plano usando o BITS.Então, na próxima vez que o aplicativo fosse aberto, ele perceberia que havia uma nova versão (definimos um sinalizador) e apareceria uma mensagem alertando o usuário sobre a nova versão, e um botão para clicar se quisesse ver os novos recursos adicionados para esta versão.

Fica mais fácil se você tiver um aplicativo secundário executado para fazer as atualizações.Você executaria o aplicativo "atualizador" e, dentro dele, aguardaria a saída do outro processo.Se você precisar de acesso às DLLs regulares dos aplicativos e similares, mas eles também precisarem de atualização, você pode executar o atualizador a partir de um local secundário com DLLs já atualizadas para que não estejam em uso no local original.

Se você estiver escrevendo um aplicativo .NET, considere usar ClickOnce.Se precisar de um pouco de personalização, você pode procurar outro lugar.

Temos um processo externo que realiza a atualização para nós.Ao encontrar uma atualização, ele a baixa para uma pasta secundária e aguarda a saída do aplicativo principal.Ao sair, ele substitui todos os arquivos atuais.O processo principal apenas inicia o processo de atualização a cada 4 horas.Como o processo de atualização aguardará a saída do aplicativo primário, o aplicativo primário não precisa realizar nenhum processamento especial além de iniciar o aplicativo de atualização.

Este é um problema secundário, mas se você está pensando em escrever seu próprio processo de atualização, eu encorajo você a usar algum tipo de compactação para (1) salvar no download e (2) fornecer um arquivo para extrair de um servidor de atualização .

Espero que faça sentido!

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