private bool CreatePatch() { //remove failed patches FileBackup.CleanupBackups(Configs.PatchPath); using (var oldPatch = new FileBackup(Configs.PatchPath)) { var patcher = new Patcher(); var patch = patcher.StartPatch(); foreach (var module in Plugins) { IoC.Notif.ShowStatus($"Generating patch ({module.PluginName})..."); module.ApplyChanges(patch); } IoC.Notif.ShowStatus("Generating plugin patches..."); patcher.ApplyCustomPatches(patch, PluginManager); IoC.Notif.ShowStatus("Generating patch (rebuild prefetch)..."); var p = Prefetch.Load(patch); if (p.Rebuild(patch)) { p.Save(); } if (!Directory.Exists(patch.WorkingDir)) { IoC.Notif.ShowStatus("No changes found, aborting pack creation."); return(false); } IoC.Notif.ShowStatus("Generating patch (packing)..."); patcher.PackPatch(patch); IoC.Notif.ShowStatus("Copying patch..."); patcher.InstallPatch(patch); oldPatch.Delete(); #if !DEBUG Paths.Cleanup(IoC.Config.TempPath); #endif } return(true); }