using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Windows.Forms;
namespace S_MzH.Update
{
public class Update
{
// Die Variablen die für das Update Benötigt werden
private UpdateInfoCollection m_uicFilesToCheck =
new UpdateInfoCollection
();
/// <summary>
/// CTOR
/// </summary>
public Update()
{
}
/// <summary>
/// Hinzufügen einer Datei die überprüft werden muss.
/// </summary>
/// <param name="sFileName">Dateiname der zu überprüfenden Datei</param>
/// <param name="sServerPath">Der Pfad in dem sich die aktuelle Datei befindet</param>
/// <param name="sLocalPath">Der Pfad in dem sich die zu aktualisierende Datei befindet</param>
public void AddFile (string sFileName, string sServerPath, string sLocalPath)
{
m_uicFilesToCheck.Add(sFileName, sServerPath, sLocalPath);
}
/// <summary>
/// Überprüft ob einige Dateien Aktualisert werden sollten.
/// </summary>
/// <returns>true wenn eine/einige Datei/en aktualisiert werden sollten</returns>
public bool CheckUpdate ()
{
bool bUpdateAvailable = false;
for (int i = 0; i < m_uicFilesToCheck.Count; i++)
{
if (!m_uicFilesToCheck[i].UpToDate)
bUpdateAvailable = true;
}
return bUpdateAvailable;
}
/// <summary>
/// Aktualisiert alle Dateien die älter sind als die auf dem Server.
/// </summary>
/// <returns>true wenn das Update erfolgreich war.</returns>
public bool UpdateFiles()
{
string sServerFile;
string sLocalFile;
// Aktualisiere die Dateien
for (int i = 0; i < m_uicFilesToCheck.Count; i++)
{
// Nur Updaten wenn die Datei nicht UpToDate ist!
if (!m_uicFilesToCheck[i].UpToDate)
{
sLocalFile = m_uicFilesToCheck[i].LocalPath + m_uicFilesToCheck[i].FileName;
sServerFile = m_uicFilesToCheck[i].ServerPath + m_uicFilesToCheck[i].FileName;
// Löschen der Lokalen Datei
File.Delete(sLocalFile + ".old");
// Wenn die Datei nicht existent ist dann soll auch keine Exeption folgen
try
{
File.Move(sLocalFile, sLocalFile + ".old");
}
catch
{ }
File.Copy(sServerFile, sLocalFile);
}
}
return true;
}
/// <summary>
/// Aktualisiert alle Dateien die älter sind als die auf dem Server.
/// </summary>
/// <param name="bRestart">true wenn nach den Update das Programm neu gestartet werden soll.</param>
/// <returns>true wenn das Update erfolgreich war.</returns>
public bool UpdateFiles(bool bRestart)
{
// Aktualisiere die Dateien
UpdateFiles();
// Neustarten wenn es gewünscht ist
if (bRestart)
{
MessageBox.Show("Das Programm wird nun neu gestartet.", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Information);
Application.Restart();
Application.Exit();
}
return true;
}
}
}