I have 2 procedures, one compiles the file and the other sends the file to FTP, but the upload procedure is running concurrently with the compression procedure, and tries to send the file before the compression finishes. >
procedure TForm2.compactacao;
var
sNomeArquivoCompactado, sDiretorioCompactar: string;
begin
sNomeArquivoCompactado := ObterDiretorioDoExecutavel + 'setup/lib.7z';
sDiretorioCompactar := ObterDiretorioDoExecutavel + 'bin\*';
try
ShellExecute(0, nil, '7z.exe',
PWideChar(' a -r ' + sNomeArquivoCompactado + ' ' + sDiretorioCompactar),' ', SW_SHOW);
except
On E: Exception do
begin
ShowMessage('Erro ao compactar: ' + E.Message);
// interrompe a compactacao
Abort;
end;
end;
log('Fim da compactação do arquivo de atualização');
end;
procedure TForm2.enviarArquivo;
begin
try
if ConectarServidorFTP = True then
IdFTP.Put(ObterDiretorioDoExecutavel+ 'setup\lib.7z','',False);
except
On E: Exception do
begin
// ignora a exceção "Connection Closed Gracefully"
if E is EIdFTPException then
Exit;
ShowMessage('Erro no upload : ' + E.Message);
// interrompe a atualização
Abort;
end;
end;
end;