Re: [delphi-br] Ajuda...Atualização d e Software

2010-02-10 Por tôpico Dirlei
É interessante saber como funcionam outras soluções Walter! Fiz alguns 
comentários/perguntas abaixo.

Walter Chagas (Bol) escreveu:
  

 Aqui na telemont temos um sistema de atualização automatica também. 
 Porém com algumas diferenças:

 1) Feito em VB

 2) Ele nao guarda o update no banco e sim numa pasta em um servidor de 
 arquivos.

O meu também não. No banco fica apenas a URL para o setup de 
atualização (compactado com LZMA para burlar proxies que bloqueiam 
download de EXE)

 3) Guardamos no banco o número da ultima versão que deve estar rodando 
 nas estações


 4) Ao ser executado na estação, o sistema consulta o banco se a versão 
 dele é a mesma que está na tabela. Caso contrario, ele chama um 
 programinha de atualização automática para baixar o update do 
 servidor. Quando ele chama este aplicativo, ele já se auto finaliza. 
 Este programinha baixa o update e já o executa automaticamente.

Como vocês lidam com o caso de a instalação estar mais de uma versão 
defasada? Exemplo: o cliente está na versão 1.0 e não fez a atualização 
para 1.1. Quando ele resolve atualizar, a versão mais recente já é 1.2.


 Pela WEB é possível que isto funcione também porém, o servidor aonde 
 as atualizações vão ficar, deverá ter IP fixo..

Não entendi, por que IP fixo?


 []s


 Walter Alves Chagas Junior
 Belo Horizonte - MG - Brazil
 mailto:wchagasj%40bol.com.br




Re: [delphi-br] Ajuda...Atualização d e Software

2010-02-09 Por tôpico Dirlei
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???