diff --git a/Utils/CmdArgs.cs b/Utils/CmdArgs.cs index fb6f2cc..78cd539 100644 --- a/Utils/CmdArgs.cs +++ b/Utils/CmdArgs.cs @@ -12,7 +12,7 @@ namespace BlubbFish.Utils Touple } #region Classes - public class VaildArguments + public struct VaildArguments { public VaildArguments(ArgLength length, Boolean required) { @@ -28,7 +28,7 @@ namespace BlubbFish.Utils public ArgLength Length { get; private set; } public Boolean Required { get; private set; } } - private class ArgTouple + private struct ArgTouple { public ArgTouple(String type, String data) { @@ -38,6 +38,7 @@ namespace BlubbFish.Utils public ArgTouple(String type) { this.Type = type; + this.Data = ""; } public String Type { get; private set; } public String Data { get; private set; } diff --git a/Utils/EventArgsHelper.cs b/Utils/EventArgsHelper.cs new file mode 100644 index 0000000..ea64ba7 --- /dev/null +++ b/Utils/EventArgsHelper.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; + +namespace BlubbFish.Utils { + public class UpdaterEventArgs : EventArgs { + public UpdaterEventArgs(Boolean hasUpdates, String message) { + this.HasUpdates = hasUpdates; + this.Message = message; + } + public String Message { get; private set; } + public Boolean HasUpdates { get; private set; } + } + + public class UpdaterFailEventArgs : EventArgs { + public UpdaterFailEventArgs(Exception e) { + this.Except = e; + } + + public Exception Except { get; private set; } + } + + public class LogEventArgs : EventArgs { + public LogEventArgs(String location, String message, OwnObject.LogLevel level, DateTime date) { + this.Location = location; + this.Message = message; + this.Level = level; + this.Date = date; + } + + public String Location { get; private set; } + public String Message { get; private set; } + public OwnObject.LogLevel Level { get; private set; } + public DateTime Date { get; private set; } + } +} diff --git a/Utils/OwnObject.cs b/Utils/OwnObject.cs index 4c446f6..6d95211 100644 --- a/Utils/OwnObject.cs +++ b/Utils/OwnObject.cs @@ -37,20 +37,6 @@ namespace BlubbFish.Utils } } - public class LogEventArgs : EventArgs { - public LogEventArgs(String location, String message, LogLevel level, DateTime date) { - this.Location = location; - this.Message = message; - this.Level = level; - this.Date = date; - } - - public String Location { get; private set; } - public String Message { get; private set; } - public LogLevel Level { get; private set; } - public DateTime Date { get; private set; } - } - private List loglist = new List(); public delegate void LogEvent(Object sender, LogEventArgs e); diff --git a/Utils/Properties/AssemblyInfo.cs b/Utils/Properties/AssemblyInfo.cs index 96a6ef3..bac759f 100644 --- a/Utils/Properties/AssemblyInfo.cs +++ b/Utils/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.2.6")] -[assembly: AssemblyFileVersion("1.0.2.6")] +[assembly: AssemblyVersion("1.0.3.1")] +[assembly: AssemblyFileVersion("1.0.3.1")] diff --git a/Utils/Updater.cs b/Utils/Updater.cs index 784b191..3bd3631 100644 --- a/Utils/Updater.cs +++ b/Utils/Updater.cs @@ -1,5 +1,6 @@  using System; +using System.Collections.Generic; using System.IO; using System.Net; using System.Reflection; @@ -13,40 +14,29 @@ namespace BlubbFish.Utils { private static Updater instances; private String url; private VersionInfo[] versions; - - public class UpdaterEventArgs : EventArgs { - public UpdaterEventArgs(Boolean hasUpdates, String message) { - this.HasUpdates = hasUpdates; - this.Message = message; - } - - public String Message { get; private set; } - public Boolean HasUpdates { get; private set; } - } + private Thread t; public struct VersionInfo { - public VersionInfo(String name, String version, String filename, String guid) { - this.Name = name; - this.Version = version; - this.Filename = filename; - this.GUID = guid; - } public VersionInfo(Type type) { this.Name = type.Assembly.GetName().Name; this.Version = type.Assembly.GetName().Version.ToString(); this.Filename = type.Assembly.ManifestModule.Name; this.GUID = ((GuidAttribute)type.Assembly.GetCustomAttribute(typeof(GuidAttribute))).Value; + this.HasUpdate = false; } public String Name { get; private set; } public String Version { get; private set; } public String Filename { get; private set; } public String GUID { get; private set; } + public Boolean HasUpdate { get; set; } } public delegate void UpdateStatus(Object sender, UpdaterEventArgs e); + public delegate void UpdateFail(Object sender, UpdaterFailEventArgs e); public event UpdateStatus UpdateResult; + public event UpdateFail ErrorRaised; private Updater() { } @@ -66,7 +56,7 @@ namespace BlubbFish.Utils { /// Waits for the Result of the Updater thread. /// public void WaitForExit() { - throw new NotImplementedException(); + while (this.t.ThreadState == ThreadState.Running) { } } /// @@ -104,41 +94,58 @@ namespace BlubbFish.Utils { /// public void Check() { if(this.url == "") { - throw new ArgumentException("You must set url first."); + throw new ArgumentException("Zuerst eine URL setzen!"); } if(this.versions.Length == 0) { - throw new ArgumentException("You must set a Version number first."); + throw new ArgumentException("Zuerst Dateien registrieren!"); } if(this.UpdateResult == null) { - throw new ArgumentNullException("You must attach an event first."); + throw new ArgumentNullException("Zuerst das Update Event anhängen."); } - Thread t = new Thread(this.Runner); - t.Start(); + this.t = new Thread(this.Runner); + this.t.Start(); } private void Runner() { - Thread.Sleep(1000); - WebRequest request = WebRequest.Create(this.url + "version.xml"); - WebResponse response = null; + Thread.Sleep(1); try { - response = request.GetResponse(); - } catch(WebException e) { - this.UpdateResult(this, new UpdaterEventArgs(false, e.Message)); + Stream stream = WebRequest.Create(this.url + "version.xml").GetResponse().GetResponseStream(); + String content = new StreamReader(stream).ReadToEnd(); + List updates = new List(); + XmlDocument doc = new XmlDocument(); + doc.LoadXml(content); + foreach (XmlNode node in doc.DocumentElement.ChildNodes) { + String guid = node.Attributes["GUID"].Value; + String version = node.Attributes["Version"].Value; + for(Int32 i=0;i 0) { + this.UpdateResult(this, new UpdaterEventArgs(true, "Update verfügbar")); + return; + } + } catch (Exception e) { + this.ErrorRaised?.Invoke(this, new UpdaterFailEventArgs(e)); return; } - Stream stream = response.GetResponseStream(); - StreamReader reader = new StreamReader(stream); - String content = reader.ReadToEnd(); + this.UpdateResult(this, new UpdaterEventArgs(false, "Kein Update verfügbar")); } /// /// Update the file /// - /// The filename of the targetfile - /// The url of the sourcefile /// Updates the Programm after it has been closed /// public Boolean Update(Boolean afterExit = true) { + try { + + } catch(Exception e) { + this.ErrorRaised?.Invoke(this, new UpdaterFailEventArgs(e)); + return false; + } return true; } } diff --git a/Utils/Utils.csproj b/Utils/Utils.csproj index 71406a3..cc29b82 100644 --- a/Utils/Utils.csproj +++ b/Utils/Utils.csproj @@ -41,6 +41,7 @@ + diff --git a/Utils/bin/Release/Utils.dll b/Utils/bin/Release/Utils.dll index b21d53c..c6d2cdc 100644 Binary files a/Utils/bin/Release/Utils.dll and b/Utils/bin/Release/Utils.dll differ