Detectar a versão mais atual entre dois aplicativos

Delphi

26/12/2006

Saudações,
gostaria de saber se é possível fazer isso: tenho dois executáveis (ex: um em C:\Meus Documentos e outro em C:\Projeto, os caminhos dos dois estão salvos num arquivo Ini). Utilizando outro executável (o terceiro, este em C:\) irei ler o arquivo Ini e assim procurar saber qual dos dois aplicativos é o mais atual e assim abrir este aplicativo. Resumindo, gostaria de saber como faço pra que um aplicativo através de um Ini verifique qual dos outros dois é o mais atual e o abra. Já sei como criar e salvar um arquivo Ini, este já está configurado. Agradeço a ajuda.


Zooropa

Zooropa

Curtidas 0

Respostas

Daniel Martins

Daniel Martins

26/12/2006

olá amigo.

voce pode comparar as datas dos arquivos para verificar qual é o mais atual voce pode usar esse código:
Unit SysUtils  var

  DataArq: TDateFile;
begin
  DataArq:= FileDateToDateTime(FileAge(´NomeDoArquivo´));
end;  

usei esse tipo de coisa em um cliente para atualizar a aplicação na rede, com isso só preciso colar o executável da aplicação em um computador, qdo o programa é aberto nas outras máquinas esse código faz a comparação e atualiza.

caso queira copiar o executavel atual voce pode utilizar este código:
procedure TForm1.Button2Click(Sender: TObject);
var
    SR: TSearchRec;
    I: integer;
    Origem, Destino: string;
begin
   I := FindFirst(´c:\Origem\*.*´, faAnyFile, SR);
   while I = 0 do
       begin
       if (SR.Attr and faDirectory) <> faDirectory then
          begin
          Origem := ´c:\Origem\´ + SR.Name;
          Destino := ´c:\Destino\´ + SR.Name;
          if not CopyFile(PChar(Origem), PChar(Destino), true) then
             ShowMessage(´Erro ao copiar ´ + Origem + ´ para ´ + Destino);
       end;
       I := FindNext(SR);
   end;
end; 

Só fazer algumas adaptações... :D

espero ter ajudado! :lol:


GOSTEI 0
Zooropa

Zooropa

26/12/2006

Saudações Daniel,
estou realizando o teste do seu código mas desde já quero agradecer a ajuda. Acho que dessa forma (com a data) já ajudaria. Assim que terminar o teste respondo. Valews!


GOSTEI 0
Massuda

Massuda

26/12/2006

...dessa forma (com a data) já ajudaria.
Usar a data do arquivo que é mantida pelo (sistema de arquivos do) Windows não funciona. No caso do arquivo ser baixado da web ou salvo a partir de um email, a data será a data que baixou o arquivo.

É melhor usar as informações de versão do executável que você pode gerar automaticamente através de [b:896446d292]Project|Options[/b:896446d292], aba [b:896446d292]Version Info[/b:896446d292].

Para ver exemplos de como ler essas informações de versão, :arrow: [url=http://forum.clubedelphi.net/search.php]pesquise[/url] o fórum por ´GetFileVersionInfo´.


GOSTEI 0
Daniel Martins

Daniel Martins

26/12/2006

para baixar o executável da Web eu utilizei outros métodos, mas esse foi para atualizar na rede e funcionou.
Exemplo o executavel da minha máquina tem a data 27/12/2006 e o executavel do servidor tem a data 28/12/2006, qual é o mais atual??

claro que no servidor existe uma pasta específica para colocar o arquivo .exe, ele não é executado nesta pasta é apenas para ser copiado.

Talvez pela versão seja melhor, mas o exemplo que segui comparei a data e a hora do arquivo, se eu atualizar o arquivo mais de 1 vez por dia ele atualiza na rede sem problemas...


GOSTEI 0
POSTAR