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); } } }
private void Uploader_StatusFinishedUploading(object sender, BoolEventArgs e) { if (e.Status) { EvntStatus?.Invoke(this, new TextEventArgs($"Обновление на сервер в: {_serverUpdateURI} загружено успешно!")); } else { EvntStatus?.Invoke(this, new TextEventArgs($"Ошибка! Обновление не загружено в: {_serverUpdateURI}")); } }
/// <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}"); } }
//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; }
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}'")); }
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, $"Операции загрузки/выгрузки обновлений не доступны."); } }
private void Uploader_MessageStatus(object sender, TextEventArgs e) { EvntStatus?.Invoke(this, new TextEventArgs(e.Message)); }