App.xaml.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. using System;
  2. using System.ComponentModel;
  3. using System.IO;
  4. using System.Windows;
  5. using System.Windows.Threading;
  6. using GCHR.Control;
  7. using GCHR.Control.Tasks;
  8. using GCHR.Model;
  9. using Microsoft.Win32;
  10. namespace GCHR
  11. {
  12. public partial class App
  13. {
  14. private TaskManager _tasks;
  15. protected override void OnStartup(StartupEventArgs e)
  16. {
  17. FrameworkVersionPruefen();
  18. KonfigdateiUmbenennen();
  19. if (e.Args.Length == 0)
  20. {
  21. StartupUri = new Uri("Main.xaml", UriKind.Relative);
  22. base.OnStartup(e);
  23. }
  24. else
  25. {
  26. if (e.Args[0].Length == 6)
  27. {
  28. ConsoleStart(e.Args[0]);
  29. }
  30. else
  31. {
  32. Console.WriteLine(@"Aufruf:\n\tGCHR.exe JJJJMM");
  33. Shutdown();
  34. }
  35. }
  36. }
  37. private void KonfigdateiUmbenennen()
  38. {
  39. if (File.Exists(Constants.ConfigDatei)) return;
  40. if (File.Exists(Constants.ConfigDateiAlt))
  41. {
  42. File.Move(Constants.ConfigDateiAlt, Constants.ConfigDatei);
  43. }
  44. else
  45. {
  46. MessageBox.Show(string.Format("Konfigurationsdatei '{0}' nicht vorhanden!", Constants.ConfigDatei));
  47. Logger.Info(string.Format("Konfigurationsdatei '{0}' nicht vorhanden!", Constants.ConfigDatei));
  48. Shutdown();
  49. }
  50. }
  51. private static void FrameworkVersionPruefen()
  52. {
  53. try
  54. {
  55. // ReSharper disable PossibleNullReferenceException
  56. var installedVersions = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP");
  57. var versionNames = installedVersions.GetSubKeyNames();
  58. var framework = versionNames[versionNames.Length - 1].Substring(1);
  59. var sp = installedVersions.OpenSubKey(versionNames[versionNames.Length - 1]).GetValue("SP", 0).ToString();
  60. // ReSharper restore PossibleNullReferenceException
  61. if ((framework == "3.5" || sp == "1") || framework.Substring(0, 1) == "4") return;
  62. MessageBox.Show(string.Format(".NET-Framework Version {0} SP{1} gefunden.", framework, sp));
  63. Logger.Info(string.Format(".NET-Framework Version {0} SP{1} gefunden.", framework, sp));
  64. }
  65. catch (NullReferenceException)
  66. {
  67. Logger.Info(string.Format("Keine Informationen über .NET-Framework-Installationen gefunden."));
  68. }
  69. }
  70. private void ConsoleStart(String periode)
  71. {
  72. Logger.Info("GCHR - Start im Konsolenmodus");
  73. _tasks = new TaskManager();
  74. _tasks.CreateTasks(Ablaufsteuerung, new Periode(periode));
  75. _tasks.TryRunNextWorker();
  76. _tasks.Data.AufManuelleKontenWarten.Set();
  77. }
  78. private void Ablaufsteuerung(object s, RunWorkerCompletedEventArgs e)
  79. {
  80. var aktuellerWorker = (BackgroundWorker)s;
  81. var aktuelleAufgabe = _tasks.GetAufgabeByWorker(aktuellerWorker);
  82. if (e.Error == null)
  83. {
  84. Console.WriteLine(aktuelleAufgabe + @"... OK.");
  85. }
  86. else
  87. {
  88. Console.WriteLine(aktuelleAufgabe + @"... Abbruch." + Environment.NewLine + e.Error.Message);
  89. Shutdown();
  90. }
  91. if (aktuelleAufgabe.ID == 9)
  92. {
  93. Shutdown();
  94. }
  95. }
  96. private void ApplicationDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
  97. {
  98. Logger.Info(e.Exception.ToString());
  99. }
  100. }
  101. }