Atualizar Exe no FTP usando o Delphi

Nesta Quick Tips, irei mostra como podemos atualizar o executável usando um FTP.

Olá galera, nesta Quick Tips, irei mostra como podemos atualizar o executável usando um FTP, ficando assim mais fácil incluir novas rotinas, corrigis bugs, sem ter que mandar para o e-mail do cliente, ou colocar em um link e o mesmo ter que atualizar manualmente.

Inicialmente iremos criar um arquivo no Bloco de Notas(NotePad), e salvar o arquivo como AtualizarExe.bat, feito isso vamos copiar o código abaixo :

@echo off del "C:\Sistema JMS\JMS.exe" copy "C:\JMS.exe" "C:\Sistema JMS\" del "C:\JMS.exe" echo ################################### echo ################################### echo ### ### echo ### ### echo ### Sistema foi atualizado com sucesso ### echo ### ### echo ### ### echo ################################### echo ################################### pause cd "C:\Sistema JMS" start JMS.exe exit 

Salve o arquivo, obviamente você deve fazer as adaptações necessárias para atualizar, como por exemplo mudar o diretório(C:\Sistema JMS) e o nome do executável(JMS.exe) desejado.

Vamos criar um formulário e salvar o mesmo como uFrmAtualizarFTP, agora iremos renomear o nome do formulário para FrmAtualizarFTP.

No uFrmAtualizarFTP, vamos adicionar agora :

Seu formulário ficará mais ou menos assim :


type TFrmAtualizarFTP = class(TForm) IdFTP1: TIdFTP; Panel1: TPanel; SpeedButton1: TSpeedButton; Panel2: TPanel; Gauge1: TGauge; private { Private declarations } xTamanhoArquivo : Integer; public { Public declarations } end; Neste momento vamos configurar o componente IdFTP1, no evento onCreate do Formulário vamos implementar o seguinte : procedure TFrmAtualizarFTP.FormCreate(Sender: TObject); begin IdFTP1.AutoLogin := True; IdFTP1.Host := 'ftp.empresa.com.br';

Vamos agora implementar dois eventos no componente IdFTP1, selecione o mesmo e localize o evento onWork, implemente o seguinte neste evento :

procedure TFrmAtualizarFTP.IdFTP1Work(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); begin Gauge1.Progress := AWorkCount; Application.ProcessMessages; end;

Agora com o IdFTP1 ainda selecionado vamos localizar o evento onWorkBegin e nele vamos implementar o seguinte:

procedure TFrmAtualizarFTP.IdFTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64); begin Gauge1.Progress := 0; if AWorkCountMax > 0 then Gauge1.MaxValue := AWorkCountMax else Gauge1.MaxValue := xTamanhoArquivo; Application.ProcessMessages; end; procedure TFrmAtualizarFTP.SpeedButton1Click(Sender: TObject); begin Try Try IdFTP1.Connect; xTamanhoArquivo := IdFTP1.Size('public_html/JMS.exe'); IdFTP1.Get('public_html/JMS.exe', 'C:\JMS.exe',True, False); WinExec('AtualizarExe.bat',SW_NORMAL); Application.Terminate; Finally IdFTP1.Disconnect; end; Except on E : exception do begin raise Exception.Create('Erro ao conectar FTP' + #13 + 'Mensagem : ' + E.Message + #13 + 'Classe ' + E.ClassName ); end; end; end;

Com isso poderemos, colocar o exe dentro de um FTP particular e dizer qual é o caminho que ele se encontra no meu caso estou usando 'public_html/JMS.exe', faça aqui também suas adaptações.

Fico por aqui ate à próxima Quick Tips. Baixe o exemplo completo neste post.

Um abraço.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados