Estou querendo fazer uma funcionalidade de auto update para o meu sistema.
Pensei em fazer o seguinte:
Criar um servidor ftp onde eu publicaria as DLLs do sistema.
Ao iniciar o sistema acessar esse servidor, verificar se a versão das dlls presentes nele são superiores ao cliente.
Se for superior fazer o download e instalar as Dlls.
Acredito que seja uma idéia muito boa. Eu faria um arquivo xml, contendo os nomes, versões e caminhos das dlls hospedadas no servidor. Então, periódicamente, o programa iria acessar esse arquivo xml e comparar as dll instaladas com as constantes no arquivo. Caso haja alguma superior, faz o download.
Fiz isso para Java desktop uma vez, faz muito tempo. Funcionou legalzinho, mas não fiz por ftp, fiz por http mesmo. Era muito rápido atualizar, pois eu não carregava a JAR toda, mas só as funções/objetos que haviam sido alterados.
Lembre-se que o seu sistema não poderá estar sendo executado ao mesmo tempo em estiver sendo atualizado. Eu fechava o sistema automaticamente, executava a atualização, e abria novamente automaticamente, porém uma parte pequena do “engine” de atualização não era atualizável desta maneira. De fato nunca precisei atualizá-la, mas sabia que se um dia precisasse não seria possível, seria obrigado solicitar um “Full Update”.
Como sugeriram, eu usei um arquivo XML com nome de versões, caminho, texto sobre o que estava sendo atualizado, etc.
Existem outras formas, talvez melhores, mas para mim esta acima foi suficiente.
Só pra lembrar, normalmente o acesso FTP costuma ser lento comparado com o acesso HTTP, porque a conexão demora muito para abrir. Se o update é de dezenas de arquivinhos pequenos, FTP fica um pouco inviável, melhor usar HTTP.