private void Buttonstart_DoWork() { Logger.Writer("----------------------------------------"); this.Dispatcher.Invoke(() => { DealWithCheckboxes(); }); if (!Directory.Exists(InputFolder)) { Logger.Writer($"Folder {InputFolder} doesn't exist!"); } else { foreach (var currentWorkingFile in Directory.EnumerateFiles(InputFolder, "*.*", SearchOption.AllDirectories)) { try { var currentDir = Path.GetDirectoryName(currentWorkingFile); if (currentWorkingFile.Contains(".zip")) { ZipHandler.Extract(currentWorkingFile, TempFolder); } else if (currentWorkingFile.Contains(".png")) { var possibleCard = new FileInfo(currentWorkingFile); UserContentHandler.Identifier(possibleCard, currentWorkingFile, OutputFolder); continue; } if (ModIntegrity.Check(TempFolder)) { string ModType = ModIntegrity.ModType(TempFolder); bool CABOverride = ModIntegrity.CABOverride(TempFolder); Logger.Writer($"Modtype: {ModType}"); if (CABOverride) { Logger.Writer($"Cab override active, Cab will be unchanged."); } // guid, name, version, author, game List <string> ManifestData = ManifestHandler.CheckIntegrity(TempFolder, tagList); var guid = ManifestData[0]; var name = ManifestData[1]; var version = ManifestData[2]; var author = ManifestData[3]; var game = ManifestData[4]; var game2 = ManifestData[5]; //if (version == "Unknown") // version = "v1.0"; Console.Write(""); if (game == "Unknown") { game = "NoDeclaredGame"; } if (game2 == "Unknown") { game2 = "NoDeclaredGame"; } string realOutputFolder = $@"{OutputFolder}\{game}\{game2}\{ModType}\{author}\"; string outFile = Misc.FileExists(realOutputFolder, author, name, version); if (guid == "" | version == "Unknown") { Mover.MalformedManifest(currentWorkingFile, InputFolder, OutputFolder); continue; } else { if (!Directory.Exists(realOutputFolder)) { Directory.CreateDirectory(realOutputFolder); } outFile = Misc.IllegalFilenameCheck(outFile); Logger.Writer($"Old name: {currentWorkingFile.Remove(0, currentDir.Length + 1)}."); Logger.Writer($"New name: {outFile}."); if (skiprenaming) { outFile = currentWorkingFile.Remove(0, currentDir.Length + 1); } var oMD5 = MD5Calc.CalculateMD5(currentWorkingFile); Logger.Writer($"Original MD5: {oMD5}"); } // Time to do something useful string[] removeExt = new[] { ".png", ".jpg" }; if (!skipremovejunk) { Misc.RemoveFiles(TempFolder, OutputFolder, removeExt); } foreach (var tempFile in Directory.EnumerateFiles(TempFolder, "*.*", SearchOption.AllDirectories)) { this.Dispatcher.Invoke(() => { Debug.Assert(RandomizeCAB.IsChecked != null, "RandomizeCAB.IsChecked != null"); if (!skipcompression) { Misc.PerformCompression(tempFile, RandomizeCAB.IsChecked.Value, CABOverride); } }); } // midl for testing // outFile = currentWorkingFile.Remove(0, currentDir.Length + 1); // midl end ZipHandler.Seal(TempFolder, realOutputFolder, outFile); // Then finally, some cleanup Directory.Delete(TempFolder, true); } else if (currentWorkingFile.Contains(".zip")) { Mover.InproperMod(currentWorkingFile, InputFolder, OutputFolder); } } catch (Exception exception) { Logger.Writer(exception.ToString()); } } } tagList.Clear(); MessageBox.Show("Done"); }