private void UpdateAsync() { AppArgument updatePath = new AppArgument() { Name = "--path", Value = "." }; AppArgument reset = argList.Find(x => x.Name == "--reset"); AppArgument checkInstance = argList.Find(x => x.Name == "--processname"); UpdaterSettings config = CreateConfig(); try { SetUpdateStatusAsync("Инициализация..."); updater = new ConfigLoader(updatePath.Value, config); updater.ReadLocal(); bool needExit = false; if (checkInstance != null) { Process[] processes = Process.GetProcessesByName(checkInstance.Value); if (processes.Length > 0) { HandleUpdateMessage("Это приложение уже запущено", checkInstance.Value, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); needExit = true; } } if (!needExit) { if (reset != null) { SetUpdateStatusAsync("Выполняется сброс информации об обновлениях..."); updater.ResetLocalConfig(); SetUpdateStatusAsync("Информация об обновлениях сброшена, завершение работы."); } else { SetUpdateStatusAsync("Загружаю файл с информацией об обновлениях..."); if (updater.GetLocal() == null) { updater.ResetLocalConfig(); } Config localConfig = updater.GetLocal(); Config remoteConfig = updater.GetRemote(); if (localConfig.Version < remoteConfig.Version) { SetUpdateStatusAsync("Обновление найдено, выполняется загрузка..."); string localUpdate = updater.DownloadUpdate(remoteConfig); SetUpdateStatusAsync("Выполняется установка обновления..."); frm.DisableFormClosing = true; if (ApplyUpdate(localUpdate, remoteConfig.Version)) { SetUpdateStatusAsync("Обновление успешно установлено!"); } else { SetUpdateStatusAsync("Не удалось установить обновление!"); } frm.DisableFormClosing = false; #if DEBUG Thread.Sleep(3000); #endif } else { SetUpdateStatusAsync("Oбновление не требуется!"); } DoPostUpdateAction(updatePath.Value); } } } catch (Exception ex) { frm.DisableFormClosing = false; HandleUpdateExceptionAsync(ex); DoPostUpdateAction(updatePath.Value); return; } finally { frm.BeginInvoke(new WorkerFinish(UpdateCompleted)); } }
private void UpdateAsync() { AppArgument updatePath = new AppArgument() { Name = "--path", Value = "." }; AppArgument reset = argList.Find(x => x.Name == "--reset"); AppArgument checkInstance = argList.Find(x => x.Name == "--processname"); UpdaterSettings config = CreateConfig(); try { SetUpdateStatusAsync("Инициализация..."); updater = new ConfigLoader(updatePath.Value, config); updater.ReadLocal(); bool needExit = false; if (checkInstance != null) { Process[] processes = Process.GetProcessesByName(checkInstance.Value); if (processes.Length > 0) { HandleUpdateMessage("Это приложение уже запущено", checkInstance.Value, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); needExit = true; } } if (!needExit) { if (reset != null) { SetUpdateStatusAsync("Выполняется сброс информации об обновлениях..."); updater.ResetLocalConfig(); SetUpdateStatusAsync("Информация об обновлениях сброшена, завершение работы."); } else { SetUpdateStatusAsync("Загружаю файл с информацией об обновлениях..."); if (updater.GetLocal() == null) updater.ResetLocalConfig(); Config localConfig = updater.GetLocal(); Config remoteConfig = updater.GetRemote(); if (localConfig.Version < remoteConfig.Version) { SetUpdateStatusAsync("Обновление найдено, выполняется загрузка..."); string localUpdate = updater.DownloadUpdate(remoteConfig); SetUpdateStatusAsync("Выполняется установка обновления..."); frm.DisableFormClosing = true; if (ApplyUpdate(localUpdate, remoteConfig.Version)) { SetUpdateStatusAsync("Обновление успешно установлено!"); } else { SetUpdateStatusAsync("Не удалось установить обновление!"); } frm.DisableFormClosing = false; #if DEBUG Thread.Sleep(3000); #endif } else { SetUpdateStatusAsync("Oбновление не требуется!"); } DoPostUpdateAction(updatePath.Value); } } } catch (Exception ex) { frm.DisableFormClosing = false; HandleUpdateExceptionAsync(ex); DoPostUpdateAction(updatePath.Value); return; } finally { frm.BeginInvoke(new WorkerFinish(UpdateCompleted)); } }