Пример #1
0
        public virtual bool IsUpdateAvailable(Configuration configuration)
        {
            DisplayMessage(Enums.HandlerMessageSeverity.Trace, "Check for Updates");

            bool available = configuration.CurrentVersion != _lastResponse.Version;

            return available;
        }
Пример #2
0
        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;
        }
Пример #3
0
        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;
        }
Пример #4
0
        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;
        }
Пример #5
0
 public override bool StopApplication(Configuration configuration)
 {
     if (ExitUpdateProcess != null) ExitUpdateProcess.Invoke();
     return true;
 }
Пример #6
0
        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;
        }
Пример #7
0
        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;
        }
Пример #8
0
 public virtual bool RehashDownload(Configuration configuration)
 {
     if (Directory.Exists(configuration.UpdateDirectory)) Directory.Delete(configuration.UpdateDirectory, true);
     Directory.CreateDirectory(configuration.UpdateDirectory);
     return true;
 }
Пример #9
0
 public abstract bool StopApplication(Configuration configuration);
Пример #10
0
 public abstract bool RehashUpdate(Configuration configuration, string configName);
Пример #11
0
 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;
 }
Пример #12
0
        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;
        }