Como devo implementar um atualizador automático?

Muitos programas incluem um atualizador automático, onde o programa ocasionalmente procura atualizações on-line e, em seguida, baixa e aplica as atualizações encontradas. Os erros do programa são corrigidos, os arquivos de suporte são modificados e as coisas são (geralmente) melhoradas.

Infelizmente, por mais difícil que pareça, não consigo encontrar informações sobre esse processo em nenhum lugar. Parece que os atualizadores automáticos implementados foram proprietários ou não são considerados importantes.

Parece bastante fácil implementar o sistema que procura atualizações em uma rede e as baixa, se estiverem disponíveis. Essa parte do atualizador automático mudará significativamente de implementação para implementação. A questão é quais são as diferentes abordagens deaplicando remendos. Apenas fazendo o download de arquivos e substituindo os antigos por novos, executando um script de migração que foi baixado, fazendo o patch de partes do sistema, etc.? Os conceitos são preferidos, mas exemplos em Java, C, Python, Ruby, Lisp etc. serão apreciados.

questionAnswers(16)

yourAnswerToTheQuestion