| ftp_callback = function(BytesRead, FileSize, ...) local nPercent = Math.Round(BytesRead * (0.5 * Progress.GetRange("Progress1").End) / FileSize, 0);
 Progress.SetCurrentPos("Progress1", nPercent);
 return true;
 end
 
 extract_callback = function (...)
 if arg[3] == 0 then
 Progress.SetCurrentPos("Progress1", (0.5 * Progress.GetRange("Progress1").End) + (arg[2] * 0.5 * Progress.GetRange("Progress1").End / 100));
 end
 return true;
 end
 
 -- куда качаем (путь + имя файла)
 local sPathOut = "C:\\Acer eRecovery 2.5.4012.zip";
 -- куда будем извлекать архив
 local sExtractPath = "C:\\UnArc";
 
 Label.SetText("Label1", "Качаю какую-то лабуду ...");
 FTPWI.Download("ftp://ftp.work.acer-euro.com/notebook/aspire_5720/vista/Applications/Acer eRecovery 2.5.4012.zip", sPathOut, "", "", MODE_BINARY, 20, 21, true, ftp_callback);
 local err = Application.GetLastError();
 if err ~= 0 then
 Dialog.Message(err, _tblErrorMessages[err]);
 else
 Label.SetText("Label1", "Пытаюсь распаковать архив ...");
 if not Folder.DoesExist(sExtractPath) then Folder.Create(sExtractPath); end
 Zip.Extract(sPathOut, {"*.*"}, sExtractPath, true, true, "", ZIP_OVERWRITE_ALWAYS, extract_callback);
 local error = Application.GetLastError();
 if (error ~= 0) then
 Dialog.Message("Errror", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION);
 Progress.SetCurrentPos("Progress1", Progress.GetRange("Progress1").End);
 else
 Dialog.Message("Success", "The unzipping was successful.", MB_OK, MB_ICONINFORMATION);
 end
 end
 |