Abortar download do IdFtp
Olá pessoal....gostaria de parabenizar a qualidade desse forum, muito bom mesmo....
Mas vamos ao que interessa
Estou fazendo um atualizador do meu sistema usando o IdFtp 9 e Delphi 7.
Quando eu faço IdFtp1.Abort ele cancela o download numa boa. Mas não estou conseguindo apagar o arquivo que ele gerou ´pela metade´, ou seja, não é um arquivo completo.
Estou tentando fazer isso e não funciona, ele não apagar o arquivo e por consequencia o resto do código tb...rsss:
IdFTP1.Abort;
//apagar o arquivo que não foi completado
if FileExists(caminho_sistema) then
DeleteFile(caminho_sistema);
// voltar o nome do antigo .exe pois quando ele faz o download ele renomeia o arquivo original para .old
RenameFile(caminho_antigo,caminho_sistema);
Application.MessageBox(´Atualização cancelada pelo usuário!´+#13+13+´A versão anterior do sistema será restaurada.´+13+13+
´O sistema será reinicializado.´,´Atualização Cancelada´,MB_OK + MB_ICONINFORMATION);
WinExec(Pchar(caminho_sistema),SW_SHOWNORMAL);
IdFTP1.Disconnect;
Application.Terminate;
Já testei os caminhos e eles estão certos, o interessante que ele não deleta mas não dá nenhum erro.
Alguem pode me ajudar?
Obrigado
Mas vamos ao que interessa
Estou fazendo um atualizador do meu sistema usando o IdFtp 9 e Delphi 7.
Quando eu faço IdFtp1.Abort ele cancela o download numa boa. Mas não estou conseguindo apagar o arquivo que ele gerou ´pela metade´, ou seja, não é um arquivo completo.
Estou tentando fazer isso e não funciona, ele não apagar o arquivo e por consequencia o resto do código tb...rsss:
IdFTP1.Abort;
//apagar o arquivo que não foi completado
if FileExists(caminho_sistema) then
DeleteFile(caminho_sistema);
// voltar o nome do antigo .exe pois quando ele faz o download ele renomeia o arquivo original para .old
RenameFile(caminho_antigo,caminho_sistema);
Application.MessageBox(´Atualização cancelada pelo usuário!´+#13+13+´A versão anterior do sistema será restaurada.´+13+13+
´O sistema será reinicializado.´,´Atualização Cancelada´,MB_OK + MB_ICONINFORMATION);
WinExec(Pchar(caminho_sistema),SW_SHOWNORMAL);
IdFTP1.Disconnect;
Application.Terminate;
Já testei os caminhos e eles estão certos, o interessante que ele não deleta mas não dá nenhum erro.
Alguem pode me ajudar?
Obrigado
Altingon
Curtidas 0
Respostas
Emerson Nascimento
16/06/2008
talvez ainda não tenha sido efetuada a gravação definitiva do arquivo (pode estar ainda como temporário)
dê um tempinho antes de tentar deletar o arquivo.
algo assim:
dê um tempinho antes de tentar deletar o arquivo.
algo assim:
IdFTP1.Abort; IdFTP1.Disconnect; // já desconecto depois de abortar o download // antes de apagar o arquivo que não foi completado, // espera 2 segundos para a gravação definitiva do arquivo // (note que 2 segundos pode ainda não ser suficiente) Sleep(2000); // apaga o arquivo que não foi completado if FileExists(caminho_sistema) then DeleteFile(caminho_sistema); // volta o nome do antigo .exe, pois quando ele faz o download // ele renomeia o arquivo original para .old RenameFile(caminho_antigo,caminho_sistema); Application.MessageBox( ´Atualização cancelada pelo usuário!´+#13+13+ ´A versão anterior do sistema será restaurada.´+13+13+ ´O sistema será reinicializado.´, ´Atualização Cancelada´, MB_OK + MB_ICONINFORMATION ); WinExec(Pchar(caminho_sistema),SW_SHOWNORMAL); Application.Terminate;
GOSTEI 0
Altingon
16/06/2008
Obrigado pela resposta mas continua não funcionando, inclusive aumente o tempo e o resultado foi o mesmo...
GOSTEI 0
Altingon
16/06/2008
Mudei a sequencia do código e funcionou...coloquei a parte de excluir e renomear no onClose da tela de atualização.
Valeu pessoal muito obrigado
Valeu pessoal muito obrigado
GOSTEI 0