/// <summary> /// Task de atualização /// </summary> private async Task ExecuteAsync(bool backup, bool vacuum, bool reindex) { await Task.Run(async() => { try { SetaBarraStatus(true, 0); //-- Verifica se existe informação para atualizar TelaPrincipal.AbaAtualizacao.LabelContent = "Buscando versões do sistema..."; if (!await BuscaVersoes()) { throw new Exception("Problemas com a comunicação com o servidor ftp"); } //if (AtualizarModel.Versao < UltimaVersao) //{ //-- Ativa manutenção no banco, GeneXus se encarregará de indicar manutenção if (!await ManutencaoAtiva()) { throw new Exception("Problemas com a comunicação com o banco de dados."); } var context = new PostoContext(ConfiguracaoModel); //-- Inicia a atualização TelaPrincipal.AbaAtualizacao.ProgressoBarra2 = 0; TelaPrincipal.AbaAtualizacao.LabelContent = "Iniciando atualização..."; context.BeginTransaction(); //-- Encerra o processo do leitor de bombas caso parâmetro seja true if (ConfiguracaoModel.LeitorBomba) { Process[] processes = Process.GetProcessesByName("uLeitor"); foreach (Process process in processes) { process.Kill(); } } //-- Encerra o processo do posto web caso parâmetro seja true if (ConfiguracaoModel.PostoWeb) { Process[] processes = Process.GetProcessesByName("uPostoWe"); foreach (Process process in processes) { process.Kill(); } } TimerProximaAtualizacao.Stop(); if (!await AtualizaViewModel()) { throw new Exception("Problemas ao atualizar informações do programa."); } TelaPrincipal.AbaAtualizacao.ProgressoBarra2 = 10; //-- Roda os Rmenu de acordo com a versão if (!await AtualizarSql(context, backup)) { throw new Exception("Problemas ao rodar o rmenu."); } if (vacuum) { TelaPrincipal.AbaAtualizacao.ProgressoBarra2 = 32; //-- Roda comando de Vacuum no banco de dados if (!await ExecutaVacuum()) { throw new Exception("Ocorreu um erro ao tentar rodar o comando de vacuum no banco de dados."); } } if (reindex) { TelaPrincipal.AbaAtualizacao.ProgressoBarra2 = 40; //-- Roda comando de Reindex no banco de dados if (!await ExecutaReindex()) { throw new Exception("Ocorreu um erro ao tentar rodar o comando de reindex no banco de dados."); } } TelaPrincipal.AbaAtualizacao.ProgressoBarra2 = 50; //-- Baixa os arquivos do FTP e extrai na pasta Update if (!await AtualizarExe()) { throw new Exception("Problemas com o download dos arquivos."); } TelaPrincipal.AbaAtualizacao.ProgressoBarra2 = 80; //-- Atualiza o parversao no banco if (!await AtualizarBanco(context)) { throw new Exception("Problemas ao atualizar o banco de dados."); } if (!await ManutencaoDesativa()) { throw new Exception("Problemas ao finalizar a manutenção."); } SetTime(); TimerProximaAtualizacao.Stop(); TelaPrincipal.AbaAtualizacao.LabelContent = "Atualizado com sucesso."; TelaPrincipal.AbaAtualizacao.ProgressoBarra2 = 100; ReinicializaProgramas(false, context); } catch (Exception e) { log.Error(e.Message); TelaPrincipal.AbaAtualizacao.LabelContent = "Problemas ao atualizar."; ReinicializaProgramas(true, null); } }); }