Esta é uma questão filosófica.
Dado um aplicativo de área de trabalho hipotético e o desejo de fornecer atualizações automáticas (em vez de forçar as pessoas a irem a um site, verifique se há uma atualização, faça o download de uma atualização, instale), qual dos dois é mais uma abordagem de "prática recomendada"?
Como o iTunes , ele verifica se há uma nova versão e solicita ao usuário que baixe a nova versão. Nesse caso, ele baixa um executável de instalação completa (nesse caso, um arquivo do Windows Installer (.msi)) que instala a versão completa (não apenas uma atualização para a versão anterior - é demais para gerenciar se houver várias versões disponíveis) . Então, digamos, é a versão 10.1.1 - se você está instalando novo ou atualizando, usa o mesmo arquivo. Após o download, ele instrui o usuário a fechar o aplicativo e executar o arquivo de instalação.
Semelhante à outra, verifica se há uma nova versão e solicita que o usuário faça o download, mas, em vez de apenas baixar um executável e solicitar ao usuário que o execute, ele realmente executa para eles - desligando o programa que eles abriram, adquirindo a segurança necessária para instalar arquivos.
Problemas com o número 2: muitos problemas relacionados ao fechamento do programa, já que o programa pode abrir outros programas ( Outlook e Excel ) ou se o usuário estivesse no meio de alguma coisa. Também em torno da segurança, você precisa de acesso de administrador local para instalar, e se você não o possuir? Nas versões posteriores do Windows, você não pode simplesmente substituir a segurança da pessoa.
Problemas com o número 1: algumas pessoas acreditam que isso será muito difícil, muito esforço para o usuário final.
Eu preferiria ir com o número 1, pois economizará de 80 a 120 horas no meu projeto e é mais simples de implementar e manter. No entanto, temos pessoas que se sentem fortemente por todos os lados.
Qual é a melhor prática para esse tipo de coisa?