/// <summary> /// Extract a file to a path /// </summary> /// <param name="path"></param> /// <param name="extractor"></param> /// <param name="status"></param> private void TryExtractMod(string path, SevenZipExtractor extractor, DownloadStatus status) { status.Label.Invoke( (MethodInvoker)(() => { status.Label.Text = @"Extracting Files..."; status.ProgressBar.Step = -100; status.ProgressBar.PerformStep(); })); extractor.Extracting += (sender, e) => Extractor_Extracting(sender, e, status); Mod.ArchivePath = path; var folderPath = App.FactorioLoader.Config.ReserveFolder + "\\" + Mod.FolderName; ModFileHelper.Extract(extractor, folderPath); }
/// <summary> /// Extract the current mod /// </summary> /// <param name="status"></param> /// <returns></returns> private bool ExtractMod(DownloadStatus status) { var path = GetDownloadPath(Mod); SevenZipExtractor extractor; if (ModFileHelper.IsArchive(path, out extractor)) { TryExtractMod(path, extractor, status); status.CancelButton.Invoke((MethodInvoker)( () => { status.CancelButton.Text = @"Done"; status.Label.Text = @"Mod added successfully!"; })); return(true); } return(false); }