private void ExtractPackage(Package package) { labelStatus.Text = "Extracting " + packageOnDownloading.Name; try { var packagelocation = Path.Combine(tempFolder.FullName, package.Name); using (var zippkg = ZipFile.Read(packagelocation)) foreach (var entry in zippkg) entry.Extract(hyperFolder.FullName, ExtractExistingFileAction.OverwriteSilently); package.Extracted = true; } catch (Exception e) { MessageBox.Show(string.Format("Failed to extract {0}\nError: {1}", package.Name, e.Message), "ExtractPackage"); CleanDirectory(tempFolder); Environment.Exit(0); } }
private async void DownloadFiles(List<Package> packagelist) { if (packagelist != null && packagelist.Count > 0) { labelStatus.Text = "Attempt to download files. Please wait."; Refresh(); tempFolder = Directory.CreateDirectory("tmp"); CleanFiles(tempFolder); patcherIsDownloading = false; updateCompleted = false; hasUpdates = true; var count = 0; while (!updateCompleted) { foreach (var package in packagelist) { count++; package.Localization = Path.Combine(tempFolder.FullName, package.Name); while (patcherIsDownloading) await Task.Delay(1000); if (!package.Downloaded) { using (webClient = new WebClient()) { stopwatch.Start(); webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); labelStatus.Text = "Fetching " + package.Name; this.Text = string.Format("[{1}/{2}] {0}", windowTitle, count, packagelist.Count); try { var fileaddress = new Uri(patchesWebPath.AbsoluteUri + package.Name); webClient.DownloadFileAsync(fileaddress, package.Localization); packageOnDownloading = package; patcherIsDownloading = true; } catch (Exception e) { MessageBox.Show(e.Message); return; } } } } while (patcherIsDownloading) await Task.Delay(1000); updateCompleted = true; RecheckPackages(packagelist); } } FinishPatchProcess(); return; }
private List<Package> BuildDownloadList(string patchlist) { labelStatus.Text = "Building download list."; Refresh(); var filelist = new List<Package>(); patchlist = patchlist.Replace("\r", ""); patchlist = patchlist.Replace("\n", Environment.NewLine); using (var reader = new StringReader(patchlist)) { var line = string.Empty; while ((line = reader.ReadLine()) != null) { var splitline = line.Split('\t'); var package = new Package(); try { package.Version = Convert.ToUInt32(splitline[0]); package.Name = splitline[1]; } catch (Exception e) { labelStatus.Text = "Patch list is not correct. - Line: " + line + "\nError: " + e.Message; Refresh(); return null; } if ((package.Name.Contains(".zip")) && package.Version > patchVersion) //autoupdate files filelist.Add(package); else if (package.Name.Contains(".hyp") && package.Version > hyperVersion) //autoupdate patcher HyperbyteUpdate(); } } return filelist; }
private Package BuildDownloadList(string patchlist) { labelStatus.Text = "Fetching update."; Refresh(); Package package2download = null; patchlist.Replace("\r", ""); using (var reader = new StringReader(patchlist)) { var line = string.Empty; while ((line = reader.ReadLine()) != null) { var splitline = line.Split('\t'); var package = new Package(); try { package.Version = Convert.ToUInt32(splitline[0]); package.Name = splitline[1]; } catch (Exception e) { labelStatus.Text = "Patch list is incorret. - Line: " + line + "\nError: " + e.Message; Refresh(); return null; } if (package.Name.Contains(".hyp") && package.Version > hyperVersion) //select the last one (newer) package2download = package; } } return package2download; }
private void RecheckPackages(Package packagelist) { labelStatus.Text = "Rechecking Packages."; var pkg = packagelist; if (pkg.Downloaded == false || pkg.Extracted == false) { updateCompleted = false; return; } }
private async void DownloadFiles(Package package) { if (package != null) { labelStatus.Text = "Attempt to download. Please wait."; Refresh(); tempFolder = Directory.CreateDirectory("tmp"); CleanFiles(tempFolder); patcherIsDownloading = false; updateCompleted = false; while (!updateCompleted) { package.Localization = Path.Combine(tempFolder.FullName, package.Name); while (patcherIsDownloading) await Task.Delay(1000); if (!package.Downloaded) { using (webClient = new WebClient()) { webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); labelStatus.Text = "Fetching " + package.Name; try { var fileaddress = new Uri(patchesWebPath.AbsoluteUri + package.Name); webClient.DownloadFileAsync(fileaddress, package.Localization); packageOnDownloading = package; patcherIsDownloading = true; } catch (Exception e) { MessageBox.Show(e.Message); return; } } } while (patcherIsDownloading) await Task.Delay(1000); updateCompleted = true; RecheckPackages(package); } FinishUpdateProcess(); } else StartPatcher(); }