public bool?Run(IInstallStatusUpdate status, CancellationToken token) { foreach (var kvp in Game.BuildableBSAs) { if (token.IsCancellationRequested) { return(false); } //inBSA - KVP.Key //outBSA - KVP.Value var outBSA = kvp.Value; string outBSAFile = Path.ChangeExtension(kvp.Value, ".bsa"); string outBSAPath = Path.Combine(_installer.DirTTWMain, outBSAFile); var inBSA = kvp.Key; string inBSAFile = Path.ChangeExtension(kvp.Key, ".bsa"); string inBSAPath = Path.Combine(_installer.DirFO3Data, inBSAFile); ErrorPromptResult buildResult; try { status.CurrentOperation = string.Format("Building {0}", outBSA); if (!_prompts.BuildPrompt(outBSA, outBSAPath)) { continue; } var bsaInstaller = DependencyRegistry.Container.GetInstance <BsaInstaller>(); do { buildResult = bsaInstaller.Patch(bsaInstaller.GetOptionsOrDefault(inBSA), inBSAFile, inBSAPath, outBSAPath); } while (!token.IsCancellationRequested && buildResult == ErrorPromptResult.Retry); } finally { status.Step(); } if (buildResult == ErrorPromptResult.Abort) { return(null); } } return(true); }
public bool? Run(IInstallStatusUpdate status, CancellationToken token) { foreach (var kvp in Game.BuildableBSAs) { if (token.IsCancellationRequested) return false; //inBSA - KVP.Key //outBSA - KVP.Value var outBSA = kvp.Value; string outBSAFile = Path.ChangeExtension(kvp.Value, ".bsa"); string outBSAPath = Path.Combine(_installer.DirTTWMain, outBSAFile); var inBSA = kvp.Key; string inBSAFile = Path.ChangeExtension(kvp.Key, ".bsa"); string inBSAPath = Path.Combine(_installer.DirFO3Data, inBSAFile); ErrorPromptResult buildResult; try { status.CurrentOperation = string.Format("Building {0}", outBSA); if (!_prompts.BuildPrompt(outBSA, outBSAPath)) continue; var bsaInstaller = DependencyRegistry.Container.GetInstance<BsaInstaller>(); do { buildResult = bsaInstaller.Patch(bsaInstaller.GetOptionsOrDefault(inBSA), inBSAFile, inBSAPath, outBSAPath); } while (!token.IsCancellationRequested && buildResult == ErrorPromptResult.Retry); } finally { status.Step(); } if (buildResult == ErrorPromptResult.Abort) return null; } return true; }