public virtual bool IsUpdateAvailable(Configuration configuration) { DisplayMessage(Enums.HandlerMessageSeverity.Trace, "Check for Updates"); bool available = configuration.CurrentVersion != _lastResponse.Version; return available; }
public virtual bool FetchFileList(Configuration configuration) { DisplayMessage(Enums.HandlerMessageSeverity.Trace, "Retrive versions file list"); _lastResponse = Classes.JsonObject.Instance.ReadWebObject<APIResponse>(configuration.Path(Enums.PathType.Version, _lastResponse.Version)); if (_lastResponse.Equals(null) || !_lastResponse.Success) { DisplayMessage(Enums.HandlerMessageSeverity.Error, "Failed to load file list from server"); if (ExitUpdateProcess != null) ExitUpdateProcess.Invoke(); return false; } return true; }
public virtual bool RetriveProjectInformations(Configuration configuration) { if (StartUpdateProcess != null) StartUpdateProcess.Invoke(); DisplayMessage(Enums.HandlerMessageSeverity.Trace, "Get Project Information"); _lastResponse = Classes.JsonObject.Instance.ReadWebObject<APIResponse>(configuration.Path(Enums.PathType.Project)); if (_lastResponse.Equals(null) || !_lastResponse.Success) { DisplayMessage(Enums.HandlerMessageSeverity.Warning, "Failed to load Project Informations"); if (ExitUpdateProcess != null) ExitUpdateProcess.Invoke(); return false; } return true; }
public virtual bool IsUpdateRequired(Configuration configuration, bool forceUpdate) { if (!configuration.AutoUpdate && !forceUpdate) { DisplayMessage(Enums.HandlerMessageSeverity.Trace, "Automatic updates are disabled"); if (ExitUpdateProcess != null) ExitUpdateProcess.Invoke(); return false; } bool updateRequired = IsUpdateAvailable(configuration); DisplayMessage(Enums.HandlerMessageSeverity.Trace, updateRequired ? "Updates available" : "No Updates found"); if (!updateRequired && ExitUpdateProcess != null) ExitUpdateProcess.Invoke(); return updateRequired; }
public override bool StopApplication(Configuration configuration) { if (ExitUpdateProcess != null) ExitUpdateProcess.Invoke(); return true; }
public override bool RehashUpdate(Configuration configuration, string configName) { DisplayMessage(HandlerMessageSeverity.Important, "Copy files"); foreach (string item in Directory.GetFiles(TargetDirectory)) { if (item.Equals(configName)) continue; try { File.Delete(item); } catch (Exception) { } } foreach (string item in Directory.GetDirectories(TargetDirectory)) { string d = Path.GetFileName(item); if (configuration.ProtectedDirectories.Contains(d)) continue; if (item.Equals(configuration.UpdateDirectory)) continue; try { Directory.Delete(item, true); } catch (Exception) { } } string[] files = Directory.GetFiles(UpdateDirectory, "*", SearchOption.AllDirectories); foreach (var item in files) { string pathPartial = item.Replace(UpdateDirectory, "").TrimStart(new[] {'/', '\\'}); string newPath = Path.Combine(TargetDirectory, pathPartial); string filePath = Path.GetDirectoryName(newPath); if (!Directory.Exists(filePath)) Directory.CreateDirectory(filePath); try { File.Copy(item, newPath); } catch (Exception) { } } try { Directory.Delete(UpdateDirectory, true); } catch (Exception) { } return true; }
public virtual bool DownloadUpdate(Configuration configuration) { foreach (KeyValuePair<string, string> item in _lastResponse.Files) { Uri source = configuration.Path(Enums.PathType.File, _lastResponse.Version, item.Key); Classes.WebDownloader.Instance.AddDownloadFile(source, Path.Combine(configuration.UpdateDirectory, item.Value)); } Classes.WebDownloader.Instance.DownloadQueue(); while (Classes.WebDownloader.downloadQueue.Count != 0) { //NOP - Wait for download complete! } return true; }
public virtual bool RehashDownload(Configuration configuration) { if (Directory.Exists(configuration.UpdateDirectory)) Directory.Delete(configuration.UpdateDirectory, true); Directory.CreateDirectory(configuration.UpdateDirectory); return true; }
public abstract bool StopApplication(Configuration configuration);
public abstract bool RehashUpdate(Configuration configuration, string configName);
public virtual bool DownloadUpdate(Configuration configuration) { foreach (KeyValuePair<string, string> item in _lastResponse.Files) { Uri source = configuration.Path(Enums.PathType.File, _lastResponse.Version, item.Key); Classes.WebDownloader.Instance.DownloadFile(source, Path.Combine(configuration.UpdateDirectory, item.Value)); } Console.WriteLine(_lastResponse.Files.Count + " files insgesamt, aktuell bei " + Classes.WebDownloader.Instance.FileNumber); while (_lastResponse.Files.Count != Classes.WebDownloader.Instance.FileNumber && Classes.WebDownloader.Instance.Downloading) { } return true; }
public override bool RehashUpdate(Configuration configuration, string configName) { foreach (string item in Directory.GetFiles(TargetDirectory)) { if (item.Equals(configName)) continue; try { File.Delete(item); } catch (Exception) { } } foreach (string item in Directory.GetDirectories(TargetDirectory)) { string d = Path.GetFileName(item); if (configuration.ProtectedDirectories.Contains(d)) continue; if (item.Equals(configuration.UpdateDirectory)) continue; try { Directory.Delete(item, true); } catch (Exception) { } } string[] files = Directory.GetFiles(UpdateDirectory); foreach (var item in files) { string newPath = Path.Combine(TargetDirectory, Path.GetFileName(item)); try { File.Copy(item, newPath); } catch (Exception) { } } try { Directory.Delete(UpdateDirectory, true); } catch (Exception) { } return true; }