Die Update Klasse Drucken
Diese Klasse ist dafür zuständig das suchen von Updates zu organisieren und gegebenenfalls ein Update durchzuführen. Die einzelnen Informationen der Dateien die überwacht werden sollen werden in der Liste "UpdateInfoCollection" gespeichert. Die Liste beinhaltet dann für jede Datei eine eigene "UpdateInfo" variable. Beim hinzufügen einer Datei wird ein neues UpdateInfo Element erstellt, welches dann auch gleich überprüft ob es für diese Datei ein Update gibt.
Die Methode "CheckUpdate" überprüft ob eine Datei aktualisiert werden muss. Wenn es eine neuere Datei auf dem Server gibt dann wird "true" zurückgegeben. Die überladene Methode "UpdateFiles" aktualisiert die Dateien. Wenn der Übergabeparameter gleich "true" ist dann wird nach dem Update auch ein Neustart des Programms veranlasst. Leider funktioniert das neustarten nicht immer. Aus diesem Grund sollte nach dem Aufruf von "CheckUpdate(true)" immer ein Applikation.Exit() oder ein Close() folgen.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.IO;
  5. using System.Windows.Forms;
  6.  
  7. namespace S_MzH.Update
  8. {
  9. public class Update
  10. {
  11. // Die Variablen die für das Update Benötigt werden
  12. private UpdateInfoCollection m_uicFilesToCheck = new UpdateInfoCollection();
  13.  
  14. /// <summary>
  15. /// CTOR
  16. /// </summary>
  17. public Update()
  18. {
  19. }
  20.  
  21. /// <summary>
  22. /// Hinzufügen einer Datei die überprüft werden muss.
  23. /// </summary>
  24. /// <param name="sFileName">Dateiname der zu überprüfenden Datei</param>
  25. /// <param name="sServerPath">Der Pfad in dem sich die aktuelle Datei befindet</param>
  26. /// <param name="sLocalPath">Der Pfad in dem sich die zu aktualisierende Datei befindet</param>
  27. public void AddFile (string sFileName, string sServerPath, string sLocalPath)
  28. {
  29. m_uicFilesToCheck.Add(sFileName, sServerPath, sLocalPath);
  30. }
  31.  
  32. /// <summary>
  33. /// Überprüft ob einige Dateien Aktualisert werden sollten.
  34. /// </summary>
  35. /// <returns>true wenn eine/einige Datei/en aktualisiert werden sollten</returns>
  36. public bool CheckUpdate ()
  37. {
  38. bool bUpdateAvailable = false;
  39.  
  40. for (int i = 0; i < m_uicFilesToCheck.Count; i++)
  41. {
  42. if (!m_uicFilesToCheck[i].UpToDate)
  43. bUpdateAvailable = true;
  44. }
  45.  
  46. return bUpdateAvailable;
  47. }
  48.  
  49. /// <summary>
  50. /// Aktualisiert alle Dateien die älter sind als die auf dem Server.
  51. /// </summary>
  52. /// <returns>true wenn das Update erfolgreich war.</returns>
  53. public bool UpdateFiles()
  54. {
  55. string sServerFile;
  56. string sLocalFile;
  57.  
  58. // Aktualisiere die Dateien
  59. for (int i = 0; i < m_uicFilesToCheck.Count; i++)
  60. {
  61. // Nur Updaten wenn die Datei nicht UpToDate ist!
  62. if (!m_uicFilesToCheck[i].UpToDate)
  63. {
  64. sLocalFile = m_uicFilesToCheck[i].LocalPath + m_uicFilesToCheck[i].FileName;
  65. sServerFile = m_uicFilesToCheck[i].ServerPath + m_uicFilesToCheck[i].FileName;
  66.  
  67. // Löschen der Lokalen Datei
  68. File.Delete(sLocalFile + ".old");
  69. // Wenn die Datei nicht existent ist dann soll auch keine Exeption folgen
  70. try
  71. {
  72. File.Move(sLocalFile, sLocalFile + ".old");
  73. }
  74. catch
  75. { }
  76. File.Copy(sServerFile, sLocalFile);
  77. }
  78. }
  79.  
  80. return true;
  81. }
  82.  
  83. /// <summary>
  84. /// Aktualisiert alle Dateien die älter sind als die auf dem Server.
  85. /// </summary>
  86. /// <param name="bRestart">true wenn nach den Update das Programm neu gestartet werden soll.</param>
  87. /// <returns>true wenn das Update erfolgreich war.</returns>
  88. public bool UpdateFiles(bool bRestart)
  89. {
  90. // Aktualisiere die Dateien
  91. UpdateFiles();
  92.  
  93. // Neustarten wenn es gewünscht ist
  94. if (bRestart)
  95. {
  96. MessageBox.Show("Das Programm wird nun neu gestartet.", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Information);
  97. Application.Restart();
  98. Application.Exit();
  99. }
  100.  
  101. return true;
  102. }
  103. }
  104. }
  105.