1: public class BootstrapperExecutor
2: {
3: public static void StartupApplication(IAmABootstrapperComposition bootstrapperComposition)
4: {
5: var exceptionMessage = "Beim Starten der Anwendung ist ein Fehler aufgetreten. Bitte den Support kontaktieren.\n\n";
6:
7: if (bootstrapperComposition.Actions == null || !bootstrapperComposition.Actions.Any())
8: {
9: throw new BootstrapperException(exceptionMessage, new ArgumentOutOfRangeException("Auf dem Bootstrapper waren keine Actions definiert"));
10: }
11:
12: var context = new BootstrapperContext();
13:
14: var time = TimedAction.Run(() =>
15: {
16: foreach (var action in bootstrapperComposition.Actions)
17: {
18: var actionName = action.GetType().Name;
19: SiAuto.Main.LogMessage(string.Format("{0} gestartet", actionName));
20:
21: var timeTaken = TimedAction.Run(() => { ExecuteAction(action, context, exceptionMessage); });
22:
23: SiAuto.Main.LogMessage(string.Format("{0} in {1} erfolgreich durchgeführt",
24: actionName,
25: timeTaken.Format())
26: );
27: }
28: });
29: }
30:
31: private static void ExecuteAction(IAmABootstrapperAction action, BootstrapperContext context, string exceptionMessage)
32: {
33: try
34: {
35: action.Execute(context);
36: }
37: catch (Exception ex)
38: {
39: SiAuto.Main.LogException(string.Format("Fehler beim Bootstrapping: {0}", ex.GetFullExceptionMessage()), ex);
40: throw new BootstrapperException(string.Format("{0}{1}", exceptionMessage, ex.GetFullExceptionMessage()), ex);
41: }
42: }
43: }