private static InstallResult ExecuteContentTypes(IEnumerable <IManifest> manifests, StepVisitor visitor, out int warnings, out int errors) { warnings = 0; errors = 0; int warn; if (!CustomInstallStep.Invoke(GetMethod <CustomInstallStep>(x => x.OnBeforeInstallContentTypes(default(bool))), visitor.IsProbing, out warn)) { return(ReturnWithErrorResult()); } warnings += warn; var batchContentTypeInstallStep = AggregateContentTypeInstallSteps(manifests); if (batchContentTypeInstallStep != null) { //---- Initialize try { batchContentTypeInstallStep.Initialize(); } catch (Exception e) { Logger.LogException(e, "INITIALIZING ERROR"); return(ReturnWithErrorResult()); } //---- Install try { StepResult result = visitor.DoIt(batchContentTypeInstallStep); if (result.Kind == StepResultKind.Warning) { warnings++; } if (result.Kind == StepResultKind.Error) { return(ReturnWithErrorResult()); } } catch (Exception e) { Logger.LogException(e); return(ReturnWithErrorResult()); } } if (!CustomInstallStep.Invoke(GetMethod <CustomInstallStep>(x => x.OnAfterInstallContentTypes(default(bool))), visitor.IsProbing, out warn)) { return(ReturnWithErrorResult()); } warnings += warn; return(new InstallResult { Successful = true, NeedRestart = false }); }
private static bool ExecuteStepFamily(IEnumerable <InstallStep> steps, StepVisitor visitor, out bool needRestart, out int warnings) { warnings = 0; needRestart = false; //-- initialize steps try { foreach (var step in steps) { step.Initialize(); } } catch (Exception e) { Logger.LogException(e, "INITIALIZING ERROR"); return(false); } //-- excute steps foreach (var step in steps) { try { StepResult result = visitor.DoIt(step); needRestart = result.NeedRestart; if (result.Kind == StepResultKind.Error) { return(false); } if (result.Kind == StepResultKind.Warning) { warnings++; } } catch (Exception e) { Logger.LogException(e); return(false); } } return(true); }
private static InstallResult ExecuteContents(IEnumerable <IManifest> manifests, StepVisitor visitor, out int warnings, out int errors) { warnings = 0; int warn; errors = 0; if (!CustomInstallStep.Invoke(GetMethod <CustomInstallStep>(x => x.OnBeforeInstallContents(default(bool))), visitor.IsProbing, out warn)) { return(ReturnWithErrorResult()); } warnings += warn; var contentSteps = new List <ContentInstallStep>(); foreach (var manifest in manifests) { contentSteps.AddRange(GetContentSteps(manifest)); } //---- Initialize contents try { foreach (var step in contentSteps) { step.Initialize(); } } catch (Exception e) { Logger.LogException(e, "INITIALIZING ERROR"); return(ReturnWithErrorResult()); } //---- Install contents contentSteps.Sort(); var postponedContents = new List <ContentInstallStep>(); foreach (var step in contentSteps) { try { StepResult result = visitor.DoIt(step); if (result.Kind == StepResultKind.Warning) { warnings++; } if (result.Kind == StepResultKind.Error) { return(ReturnWithErrorResult()); } if (result.NeedSetReferencePhase) { postponedContents.Add(step); } } catch (Exception e) { Logger.LogException(e); return(ReturnWithErrorResult()); } } foreach (var step in postponedContents) { try { StepResult result = step.SetReferences(); if (result.Kind == StepResultKind.Warning) { warnings++; } if (result.Kind == StepResultKind.Error) { errors++; } } catch (Exception e) { Logger.LogException(e); return(ReturnWithErrorResult()); } } if (!CustomInstallStep.Invoke(GetMethod <CustomInstallStep>(x => x.OnAfterInstallContents(default(bool))), visitor.IsProbing, out warn)) { return(ReturnWithErrorResult()); } warnings += warn; return(new InstallResult { Successful = true, NeedRestart = false }); }