Ai vem o segredinho de estado. Na verdade o que fiz foi o seguinte: Criei um micro programa que é executado quando meu módulo abre. Desculpe, esqueci de falar. Quando meu executável é aberto, ele verifica se há atualizações a serem feitas. Versão superior ou inferior.
Em caso positivo, ou seja, tendo atualizações pra serem aplicadas, abro o micro-programa que, ao ser aberto, fecha o módulo que o chamou e efetua o SaveToFile no diretório correspondente. Ao final disso, o micro-programa reabre o módulo. Tudo isso utilizo a passagem de parâmetros do módulo principal para o micro-programa. Chamei esse cara de Update.exe e passo pra ele uma string mais ou menos assim: WinExec(Pchar('UpDate.exe [OPERACAO.EXE]6.150'), SW_SHOWNORMAL); No artigo que mencionei, está bem mais simples. O meu dei uma boa incrementada. Quando o módulo reabre o programa Update.exe é fechado. Olhe as imagens de detecção e atualização do sistema. http://img244.imageshack.us/my.php?image=deteccaots6.jpg http://img181.imageshack.us/my.php?image=atualizacaopj5.jpg Note que tenho uma pergunta se o usuário quer ou não atualizar. Isso foi colocado na versão beta. Hoje já não existe mais. O sistema só avisa que vai atualizar e manda bala, assim evito que usuário clique em NÃO e nunca atualizem. Qualquer coisa posso até disponibilizar os fontes do programa. Sem problema algum. Utilizo Firebird. Adriano Santos ------------------------------------------------------------- Editor Técnico Revista ClubeDelphi www.delphitodelphi.blogspot.com www.devmedia.com.br www.devmedia.com.br/clubedelphi/pagina.asp Fellipe Henrique respondeu: > > Olá Adriano, acho que só tem um probleminha aí... ao dar um > SaveToFile, voce > está usando o arquivo, ou seja, nao vai deixar copiar por cima... > > Como voce resolveu isso? > > []s > > Em 08/01/08, Adriano Santos (Yahoo) <[EMAIL PROTECTED] > <mailto:falecom%40adrianosantos.pro.br>> escreveu: > > > > Darkzad, > > > > Posso dar outra sugestão? > > Cara, criei um método de atualização que ficou infalível aqui. Olha só: > > Criei uma tabela no banco chamada ATUALIZACOES conforme abaixo: > > > > CREATE TABLE ATUALIZACOES ( > > ID INTEGER NOT NULL, > > NOME VARCHAR(30), > > VERSAO INTEGER, > > ARQUIVO BLOB SUB_TYPE 0 SEGMENT SIZE 80 NOT NULL > > ); > > > > E os registros na base ficam assim: > > > > FROTA.EXE | 6.150 | ???? > > OPERACAO.EXE | 6.149 | ???? > > COBRANCA.EXE | 6.127 | ???? > > > > Quando o sistema abre ele faz uma select no banco usando o nome do > > módulo (Operacao.exe, Frota.exe, Cobranca.exe). Nada como um > > ExtractFileName não resolva. Feito isso verifico se a versão do sistema, > > prevista em uma variável global, é inferior ou superior a que está no > > banco. > > > > Se for inferior, faço um "download" do arquivo atualizado puxando > > diretamente do banco de dados. Use: > > QueryCAMPO_ARQUIVO.SaveToFile(ExtractFilePath(Application.ExeName)); > > > > Se o módulo (na variável global) for superior, então faço o upload para > > o banco usando: > > QueryCAMPO_ARQUIVO.LoadFromFile(ExtractFilePath(Application.ExeName)); > > > > Desta forma, basta instalar o executável novo em uma estação e nesta > > mesma estação abrir ao menos uma vez o executável para que ele sozinho > > faça a atualização do banco. > > As demais máquinas serão automaticamente atualizadas assim que reabrirem > > o sistema. > > > > Na ClubeDelphi 84 saiu um artigo sobre isso, foi de lá que peguei a > > idéia. Porém a idéia do autor foi fazer um programinha a parte para > > atualizar o banco. No meu caso já enfiei isso direto no executável de > > produção. > > > > Ah e tem mais: todos os meus clientes usam uma dll. Cada cliente tem a > > sua. Esse esquema tb previ a atualização automática das dlls. > > > > Xuxu beleza > > > > Adriano Santos > > ---------------------------------------------------------- > > Editor Técnico Revista ClubeDelphi > > www.delphitodelphi.blogspot.com > > www.devmedia.com.br > > www.devmedia.com.br/clubedelphi/pagina.asp > > > > Darkzad respondeu: > > > > > > Bom dia a Todos > > > > > > Pessoal, estou desenvolvendo um sistema na empresa e sempre ocorre > > > atualizações a fazer e sempre tenho que pedir os usuários para sair do > > > sistema. > > > > > > Gostaria de fazer algo no sistema que enviasse uma mensagem pedindo ao > > > usuário que saia do sistema para atualização. > > > > > > Teria algo possível de resolver isso? > > > > > > Desde já agradeço > > > > > > Darkzad > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > ---------------------------------------------------------- > > > > > > No virus found in this incoming message. > > > Checked by AVG Free Edition. > > > Version: 7.5.516 / Virus Database: 269.17.13/1213 - Release Date: > > 07/01/2008 09:14 > > > > > > > > > -- > _________________________________ > T.·.F.·.A.·. > Fellipe Henrique > [EMAIL PROTECTED] <mailto:fellipeh%40gmail.com> > > [As partes desta mensagem que não continham texto foram removidas] > > > ------------------------------------------------------------------------ > > No virus found in this incoming message. > Checked by AVG Free Edition. > Version: 7.5.516 / Virus Database: 269.17.13/1213 - Release Date: 07/01/2008 > 09:14 >