예제 #1
0
        private void CheckUpdate_Event(UpdateInfoEventArgs args)
        {
            if (args != null)
            {
                if (args.IsUpdateAvailable)
                {
                    try
                    {
                        if (AutoUpdater.DownloadUpdate(args))
                        {
                            XmlDocument xmldoc = new XmlDocument();
                            XmlNodeList xmlnode;
                            xmldoc.Load(Options.appUpdateURL);
                            xmlnode = xmldoc.GetElementsByTagName("version");
                            string foundNewVersionApp = xmlnode[0].InnerText;
                            EvntStatus?.Invoke(this, new TextEventArgs($"Программа будет обновлена до версии: {foundNewVersionApp}"));
                            CommonExtensions.Logger(LogTypes.Info, $"Программа будет обновлена до версии: {foundNewVersionApp}");

                            ApplicationExit();
                        }
                    }
                    catch (Exception exception)
                    {
                        EvntStatus?.Invoke(this, new TextEventArgs($"Ошибка проверки обновлений: {exception.Message} | {exception.GetType().ToString()}"));
                        CommonExtensions.Logger(LogTypes.Info, $"Ошибка проверки обновлений: {exception.Message} | {exception.GetType().ToString()}");
                    }
                    // Uncomment the following line if you want to show standard update dialog instead.
                    // AutoUpdater.ShowUpdateForm(args);
                }
            }
        }
예제 #2
0
 private void Uploader_StatusFinishedUploading(object sender, BoolEventArgs e)
 {
     if (e.Status)
     {
         EvntStatus?.Invoke(this, new TextEventArgs($"Обновление на сервер в: {_serverUpdateURI} загружено успешно!"));
     }
     else
     {
         EvntStatus?.Invoke(this, new TextEventArgs($"Ошибка! Обновление не загружено в: {_serverUpdateURI}"));
     }
 }
예제 #3
0
        /// <summary>
        /// Run Update immidiately
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void RunUpdate()
        {
            if (!uploadingStatus || !stopUpdate)//!string.IsNullOrWhiteSpace(Options?.serverUpdateURI))
            {
                EvntStatus?.Invoke(this, new TextEventArgs($"Адрес сервера обновлений: {this._serverUpdateURI}"));
                CommonExtensions.Logger(LogTypes.Info, $"Адрес сервера обновлений: {Options.serverUpdateURI}");

                AutoUpdater.Mandatory = true;
                // AutoUpdater.ReportErrors = true;
                AutoUpdater.UpdateMode = Mode.Forced;

                DoUpdate();
            }
            else
            {
                CommonExtensions.Logger(LogTypes.Info, $"Не указан адрес сервера обновлений: {Options?.serverUpdateURI}");
            }
        }
예제 #4
0
        //Upload App's files to Server
        public void UploadUpdate() //UploadApplicationToShare()
        {
            uploadingStatus = true;
            UpdateUploader uploader = new UpdateUploader();

            uploader.StatusFinishedUploading += new UpdateUploader.Uploaded <BoolEventArgs>(Uploader_StatusFinishedUploading);
            uploader.StatusText += new UpdateUploader.Info <TextEventArgs>(Uploader_MessageStatus);


            if (!string.IsNullOrWhiteSpace(Options?.serverUpdateURI))
            {
                PrepareUpdateFiles();

                List <string> source = new List <string> {
                    Options.pathToXml, Options.pathToUpdateZip
                };

                List <IFileInfo> listSource = new List <IFileInfo>();
                source.ForEach(p => listSource.Add((FileInfoBase)ReturnNewFileInfo(p)));

                List <string> target = new List <string> {
                    Options.appUpdateFolderURI + Path.GetFileName(Options.pathToXml),
                    Options.appUpdateFolderURI + Path.GetFileName(Options.pathToUpdateZip)
                };

                List <IFileInfo> listTarget = new List <IFileInfo>();
                target.ForEach(p => listTarget.Add((FileInfoBase)ReturnNewFileInfo(p)));


                EvntStatus?.Invoke(this, new TextEventArgs($"Начинаю отправку обновления программы версии {Options.appVersion} на сервер..."));
                uploader.Set(Options, listSource, listTarget);

                uploader.Upload();
            }
            else
            {
                CommonExtensions.Logger(LogTypes.Info, $"Не указан адрес сервера обновлений: {Options?.serverUpdateURI}");
            }
            uploader.StatusFinishedUploading -= Uploader_StatusFinishedUploading;
            uploader.StatusText -= Uploader_MessageStatus;
        }
예제 #5
0
        public void PrepareUpdateFiles()
        {
            EvntStatus?.Invoke(this, new TextEventArgs($"Адрес сервера обновлений: {Options?.serverUpdateURI}"));

            if (string.IsNullOrWhiteSpace(_pathToExternalUpdateZip) || !File.Exists(_pathToExternalUpdateZip))
            {
                PrepareUpdateFile();
            }
            else
            {
                Options.pathToUpdateZip = _pathToExternalUpdateZip;
                Options.appVersion      = GetVersionFromUpdateFile(Options?.pathToUpdateZip);
            }
            EvntStatus?.Invoke(this, new TextEventArgs($"Обновление подготовлено: '{Options?.pathToUpdateZip}'"));

            WriteFileHashInOptions(Options.pathToUpdateZip);
            EvntStatus?.Invoke(this, new TextEventArgs($"Вычислен хэш файла: '{Options?.pathToUpdateZip}'"));

            MakeUpdateXML();
            EvntStatus?.Invoke(this, new TextEventArgs($"Подготовлен файл с информацией о последнем обновлении: '{Options?.pathToXml}'"));
            EvntStatus?.Invoke(this, new TextEventArgs($"Подготовлен полный пакет файлов обновления для загрузки в: '{Options?.serverUpdateURI}'"));
        }
예제 #6
0
        public async Task SetOptionsAsync(UserAD user, string serverUpdateURI, string pathToExternalUpdateZip = null)
        {
            _userAD                  = user;
            _serverUpdateURI         = serverUpdateURI;
            _pathToExternalUpdateZip = pathToExternalUpdateZip;

            if (!Directory.Exists(CommonConst.LocalTempFolder))
            {
                Directory.CreateDirectory(CommonConst.LocalTempFolder);
            }

            if (!Directory.Exists(CommonConst.LocalUpdateFolder))
            {
                Directory.CreateDirectory(CommonConst.LocalUpdateFolder);
            }

            if (!string.IsNullOrWhiteSpace(_serverUpdateURI))
            {
                Options    = MakeUpdateOptions();
                stopUpdate = false;
            }
            else
            {
                CommonExtensions.Logger(LogTypes.Info, $"При инициализации не указан адрес сервера обновлений.");
                CommonExtensions.Logger(LogTypes.Info, $"Ищу файл '{CommonConst.PathToUrl}'");
                if (!string.IsNullOrWhiteSpace(CommonConst.PathToUrl) && File.Exists(CommonConst.PathToUrl))
                {
                    IList <string> file = await ReadFileAsync(CommonConst.PathToUrl);

                    if (file?.Count > 0)
                    {
                        foreach (var f in file)
                        {
                            CommonExtensions.Logger(LogTypes.Info, f);
                            this._serverUpdateURI = f;
                            CommonExtensions.Logger(LogTypes.Info, $"Адрес источника обновлений найден в файле как: '{f}'");
                            break;
                        }

                        Options = MakeUpdateOptions();
                        EvntStatus?.Invoke(this, new TextEventArgs($"Адрес сервера обновлений: {Options.serverUpdateURI}"));

                        stopUpdate = false;
                    }
                    else
                    {
                        stopUpdate = true;
                    }
                }
                else
                {
                    stopUpdate = true;
                    EvntStatus?.Invoke(this, new TextEventArgs($"Файл с адресом сервера обновлений '{CommonConst.PathToUrl}' не найден"));
                }
            }

            if (Options?.DoObjectPropertiesAsStringDictionary().Count > 0 && !string.IsNullOrWhiteSpace(CommonConst.PathToUrl))
            {
                CommonExtensions.Logger(LogTypes.Info, "Параметры для скачивания/загрузки обновлений:");
                CommonExtensions.Logger(LogTypes.Info, Options.DoObjectPropertiesAsStringDictionary().AsString());
            }
            else
            {
                CommonExtensions.Logger(LogTypes.Info, $"Операции загрузки/выгрузки обновлений не доступны.");
            }
        }
예제 #7
0
 private void Uploader_MessageStatus(object sender, TextEventArgs e)
 {
     EvntStatus?.Invoke(this, new TextEventArgs(e.Message));
 }