/// <summary> /// Main download method. /// </summary> public void Download() { try { finished = true; foreach (IDownloadable download in downloadQueue) { string source = download.Location; string destination = Path.Combine(Config.InstallPath, "Versions", download.ToString()); currentFilepath = $"{destination}.zip"; Program.Launcher.UpdateStatus($"Downloading {download}"); Directory.CreateDirectory(destination); // Download HttpWebResponse fileresp = GetResponse(download.Location); if (fileresp.ContentLength <= 0) { MessageBox.Show($"Could not access file {download}. Package skipped."); continue; } if (!StreamFile(fileresp, download)) { finished = false; MessageBox.Show("The download couldn't be completed. Check your internet connection. If you think this is a program error, please report this to the Launcher's GitHub page."); break; } // Extraction if (!ExtractDownload(download, destination)) { continue; } // Patching if (!PatchDownload(download, destination)) { continue; } } if (finished) { QueueComplete?.Invoke(this, new EventArgs()); } } catch (ThreadAbortException) { } catch (ThreadInterruptedException) { } catch (Exception e) { new ErrorCatcher(e).ShowDialog(); Aborted?.Invoke(this, new EventArgs()); } }
private void OnQueueComplete() { QueueComplete?.Invoke(this, EventArgs.Empty); }