diff --git a/Utils/Properties/AssemblyInfo.cs b/Utils/Properties/AssemblyInfo.cs index d5aa52e..96a6ef3 100644 --- a/Utils/Properties/AssemblyInfo.cs +++ b/Utils/Properties/AssemblyInfo.cs @@ -10,7 +10,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Utils")] -[assembly: AssemblyCopyright("Copyright © 2014 - 16.04.2017")] +[assembly: AssemblyCopyright("Copyright © 2014 - 24.04.2017")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -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.5")] -[assembly: AssemblyFileVersion("1.0.2.5")] +[assembly: AssemblyVersion("1.0.2.6")] +[assembly: AssemblyFileVersion("1.0.2.6")] diff --git a/Utils/Updater.cs b/Utils/Updater.cs index 4a7a776..784b191 100644 --- a/Utils/Updater.cs +++ b/Utils/Updater.cs @@ -1,12 +1,18 @@  using System; using System.IO; +using System.Net; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Xml; namespace BlubbFish.Utils { public class Updater : OwnObject { private static Updater instances; private String url; - private String[] versions; + private VersionInfo[] versions; public class UpdaterEventArgs : EventArgs { public UpdaterEventArgs(Boolean hasUpdates, String message) { @@ -18,6 +24,26 @@ namespace BlubbFish.Utils { public Boolean HasUpdates { get; private set; } } + 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; + } + + 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 delegate void UpdateStatus(Object sender, UpdaterEventArgs e); public event UpdateStatus UpdateResult; @@ -47,16 +73,27 @@ namespace BlubbFish.Utils { /// Set Path to check for Updates /// /// HTTP URI - public void SetPath(String url, String[] versions) { + public void SetUpdateInfo(String url, VersionInfo[] versions) { this.url = url; this.versions = versions; - StreamWriter file = new StreamWriter("version.txt"); - file.BaseStream.SetLength(0); - file.BaseStream.Flush(); - file.BaseStream.Seek(0, SeekOrigin.Begin); - foreach (String version in versions) { - file.WriteLine(version); + FileStream file = new FileStream("version.xml",FileMode.Create); + XmlTextWriter xml = new XmlTextWriter(file, Encoding.UTF8); + xml.WriteStartDocument(); + xml.WriteWhitespace("\n"); + xml.WriteStartElement("filelist"); + xml.WriteWhitespace("\n"); + foreach (VersionInfo version in versions) { + xml.WriteWhitespace("\t"); + xml.WriteStartElement("file"); + xml.WriteAttributeString("Version", version.Version); + xml.WriteAttributeString("Filename", version.Filename); + xml.WriteAttributeString("GUID", version.GUID); + xml.WriteString(version.Name); + xml.WriteEndElement(); + xml.WriteWhitespace("\n"); } + xml.WriteEndElement(); + xml.Flush(); file.Flush(); file.Close(); } @@ -75,6 +112,23 @@ namespace BlubbFish.Utils { if(this.UpdateResult == null) { throw new ArgumentNullException("You must attach an event first."); } + Thread t = new Thread(this.Runner); + t.Start(); + } + + private void Runner() { + Thread.Sleep(1000); + WebRequest request = WebRequest.Create(this.url + "version.xml"); + WebResponse response = null; + try { + response = request.GetResponse(); + } catch(WebException e) { + this.UpdateResult(this, new UpdaterEventArgs(false, e.Message)); + return; + } + Stream stream = response.GetResponseStream(); + StreamReader reader = new StreamReader(stream); + String content = reader.ReadToEnd(); } /// @@ -84,7 +138,7 @@ namespace BlubbFish.Utils { /// The url of the sourcefile /// Updates the Programm after it has been closed /// - public Boolean Update(String filename, String url, Boolean afterExit = true) { + public Boolean Update(Boolean afterExit = true) { return true; } } diff --git a/Utils/bin/Release/Utils.dll b/Utils/bin/Release/Utils.dll index 56cacae..b21d53c 100644 Binary files a/Utils/bin/Release/Utils.dll and b/Utils/bin/Release/Utils.dll differ