Vou explicar como funciona o sistema de atualização automática que projetei e desenvolvi aqui onde trabalho. Não pretendo que criar um manual de como fazer, mas creio que dê pra explicar resumidamente como funciona e inspirar aqueles que pretendem fazer algo parecido.
Há uma base MySQL na internet com os "Updates" de cada produto (nossos softwares). Cada Update, atualiza um conjunto de versões. Exemplo: o update "ProgramaX 1.5" atualiza as versões do Programa X 1.3 e 1.4. Os updates são setups gerados com o NSIS (poderia ser outro gerador de instalações, mas escolhemos esse). Cada setupt de update leva apenas as atualizações necessárias, não a instalação inteira. Isso pode incluir o EXE do programa, DLL's, arquivos de relatório etc. Um detalhe importante é a atualização do banco de dados. Aqui trabalhamos com databases versionados. Ex: a primeira versão liberada tem o database 1.0. À cada alteração no database, incrementamos a versão (1.1, 1.2 ou 2.0 se a alteração for expressiva). Aqui criamos uma linguagem para contemplar os scripts de atualização e os upgrades de versão (XML + SQL + criptografia). Chamamos essa linguagem de DBML (Databse Maintenance Language). Um arquivo DBML contêm o script para realizar cada "salto" de versão. Ex: da versão 1.0 para 1.1 foi criado um índice; da versão 1.1 para 1.2 foi criada uma nova tabela e assim por diante. O setup de atualização carrega consigo um arquivo DBML (sempre que tiver acontecido uma alteração de database) com os "saltos" de versão (de database) contemplados pela atualização. Ex: se a atualização faz update da versão (de database) 1.0 e 1.1, o DBML conterá apenas esses "saltos" de versão. Agora a parte da atualização automática: Foi criado um serviço PHP que consulta a base MySql (citada no início) e informa se há atualização disponível para uma determinada versão. Nossos sistemas carregam consigo um componente que chamei de "SelfUpdate" (Atualização de si mesmo). Esse componente, 1 vez por dia, dispara o serviço PHP que diz se há atualização para a versão do produto em execução. Se houver atualização, o PHP devolve a URL para download e o componente faz download do setup de atualização. Isso acontece numa outra thread, então o sistema continua podendo ser operado. No fim do download, o usuário é avisado que na próxima execução, o programa será atualizado. Na próxima execução, se não houver nenhum outro usuário utilizando o programa, é executado o setup de atualização, que atualiza os arquivos do programa e o banco de dados, se necessário. É assim que fazemos. Funciona há alguns anos com cerca de 2 mil usuários. Qualquer dúvida, postem aqui que posso tentar ajudar na medida do possível. Um abraço, Dirlei. snakesjb escreveu: > > > Tenho um sistema feito em Delphi 2007 e banco de dados firebird...Como > o sistema ja fooi instalado em alguns clientes e o mesmo ainda está em > fase de testes, MAS EM USO, quase toda semana tenho que atualizar o > executável...alguem tem alguma idéia??? Tava pensando em colocar o > sistema em um ftp e criar um sistema para download apresentando os > arquivos para download...Alguem tem algum exemplo para me ajudar??? >