Update Lib hinzugefügt
This commit is contained in:
105
UpdateLib/Updater.cs
Normal file
105
UpdateLib/Updater.cs
Normal file
@@ -0,0 +1,105 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Serialization.Formatters.Binary;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using UpdateLib.Data;
|
||||
using UpdateLib.UI;
|
||||
|
||||
namespace UpdateLib
|
||||
{
|
||||
public class Updater : Component
|
||||
{
|
||||
private const String localUpdateFile = @".\UpdateInfo";
|
||||
public String UpdateUrl { get; set; }
|
||||
|
||||
public void CheckForUpdates()
|
||||
{
|
||||
try
|
||||
{
|
||||
CleanUp();
|
||||
WebClient downloadclient = new WebClient();
|
||||
downloadclient.DownloadFile(UpdateUrl, localUpdateFile);
|
||||
downloadclient.Dispose();
|
||||
|
||||
if(!File.Exists(localUpdateFile))
|
||||
{
|
||||
throw new FileNotFoundException("Lokale Update datei ist beschädigt");
|
||||
}
|
||||
|
||||
UpdateSaveFile localFile = DecodeSaveFile(localUpdateFile);
|
||||
|
||||
Version localVersion = Assembly.GetEntryAssembly().GetName().Version;
|
||||
Version onlineVersion = Version.Parse(localFile.VersionString);
|
||||
|
||||
if(onlineVersion > localVersion)
|
||||
{
|
||||
string MsgBox = String.Format("Version {0} verfügbar",onlineVersion);
|
||||
if(MessageBox.Show(MsgBox,"Update",MessageBoxButtons.YesNo) == DialogResult.Yes)
|
||||
{
|
||||
frmUpdater updateform = new frmUpdater(localFile,GetPath(UpdateUrl));
|
||||
updateform.ShowDialog();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show(onlineVersion.ToString());
|
||||
MessageBox.Show(localVersion.ToString());
|
||||
MessageBox.Show("Software ist in der aktuellste Version");
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
MessageBox.Show("Fehler beim uberprüfen von Updates\nVersuchen Sie später nochmal!\n\nFehlertext: " + e.Message, "Update", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private string GetPath(string UpdateUrl)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String[] updatePieces = UpdateUrl.Split('/');
|
||||
for(int i = 0; i < updatePieces.Length -1; i++)
|
||||
{
|
||||
sb.Append(updatePieces[i] + "/");
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
private UpdateSaveFile DecodeSaveFile(string localUpdateFile)
|
||||
{
|
||||
FileStream localFileStream = null;
|
||||
BinaryFormatter decoder = null;
|
||||
|
||||
try
|
||||
{
|
||||
localFileStream = File.Open(localUpdateFile, FileMode.Open, FileAccess.Read);
|
||||
decoder = new BinaryFormatter();
|
||||
return (UpdateSaveFile)decoder.Deserialize(localFileStream);
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
throw new InvalidDataException("Der lokale updatedatei ist beschädigt "+e.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (localFileStream != null)
|
||||
localFileStream.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void CleanUp()
|
||||
{
|
||||
DirectoryInfo di = new DirectoryInfo(Application.StartupPath);
|
||||
foreach (FileInfo fi in di.GetFiles("*.old", SearchOption.TopDirectoryOnly))
|
||||
fi.Delete();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user