private void actualizeazaAplicatia() { this.lActiune = BMultiLingv.GetById(BMultiLingv.EnumDictionar.recuperareaInfoReferitoaeLaVersiuneaActuala, this.lTipAplicatie);// "Recuperarea informațiilor referitoare la versiunea actuală"; this.bwServer.ReportProgress(10); //Descarcam elementele necesare this.utilizator = CUtile.GetUtilizatorISTOMA(); this.masina = new BMasina(); string idMasina = masina.Id; this.lActiune = BMultiLingv.GetById(BMultiLingv.EnumDictionar.conectareLaServer, this.lTipAplicatie);// "Conectare la server"; this.bwServer.ReportProgress(20); Actualizari.ActualizariSoapClient act = new Actualizari.ActualizariSoapClient(); byte[] arhiva = act.GetVersiuneaUrmatoare(this.utilizator.Item1, this.utilizator.Item2, CUtile.getCheieLicenta(), idMasina); string versiune = string.Empty; this.lAreDreptUpgrade = arhiva != null; if (this.lAreDreptUpgrade) { this.lActiune = BMultiLingv.GetById(BMultiLingv.EnumDictionar.recuperareaNoilorFunctionalitati, this.lTipAplicatie);//"Recuperarea noilor funcționalități"; this.bwServer.ReportProgress(40); string folderActual = CUtile.GetLocatieAplicatie(); //Incarcam arhiva in memorie using (MemoryStream arhivaMemorie = new MemoryStream(arhiva)) { List <Ionic.Zip.ZipEntry> listaSQL = new List <Ionic.Zip.ZipEntry>(); List <Ionic.Zip.ZipEntry> listaFisiere = new List <Ionic.Zip.ZipEntry>(); bool upgradeML = false; //Cream arhiva using (Ionic.Zip.ZipFile fisierZip = Ionic.Zip.ZipFile.Read(arhivaMemorie)) { foreach (Ionic.Zip.ZipEntry intrare in fisierZip) { if (intrare.FileName.EndsWith(".sql")) { //Fisier de executat SQL listaSQL.Add(intrare); } else { //Fisier de copiat if (intrare.FileName.Contains("upgradeMultiLingv")) { upgradeML = true; } else { if (intrare.FileName.Contains(".vrs")) { versiune = intrare.FileName.Substring(0, intrare.FileName.IndexOf(".vrs")); } else { listaFisiere.Add(intrare); } } } } } if (!string.IsNullOrEmpty(versiune)) { string versiuneBDDExistenta = CUtile.getUltimaVersiuneBDD(); if (string.IsNullOrEmpty(versiuneBDDExistenta)) { versiuneBDDExistenta = "1"; } if (!versiune.Equals(versiuneBDDExistenta) && Convert.ToInt32(versiune) > Convert.ToInt32(versiuneBDDExistenta)) { this.lActiune = BMultiLingv.GetById(BMultiLingv.EnumDictionar.modificareaStructuriiDeDate, this.lTipAplicatie);//"Modificarea structurii de date"; this.bwServer.ReportProgress(80); foreach (Ionic.Zip.ZipEntry executaSQL in listaSQL) { //Executam scripturile System.IO.StreamReader reader = new StreamReader(executaSQL.OpenReader()); CUtile.executaFisierSQL(reader.ReadToEnd(), "-$$$-"); } //Facem update la versiunea BDD CUtile.UpdateVersiuneBDD(versiune); if (upgradeML) { //rescriem tabela de multi lingv byte[] fisierMultiLingv = null; iStoma.VerificareSoapClient servVerif = new iStoma.VerificareSoapClient(); fisierMultiLingv = servVerif.IncarcaMultiLingv(this.utilizator.Item1, this.utilizator.Item2); CUtile.updateMultiLingv(fisierMultiLingv); } } } this.lActiune = BMultiLingv.GetById(BMultiLingv.EnumDictionar.modificareaLibrariilorIStoma, this.lTipAplicatie);//"Modificarea librariilor iStoma"; this.bwServer.ReportProgress(100); foreach (Ionic.Zip.ZipEntry fisierCopiere in listaFisiere) { //Inlocuim fisierele //Stergem fisierele care exista deja if (File.Exists(Path.Combine(folderActual, fisierCopiere.FileName))) { File.Delete(Path.Combine(folderActual, fisierCopiere.FileName)); } fisierCopiere.Extract(folderActual, Ionic.Zip.ExtractExistingFileAction.OverwriteSilently); } //Anuntam serverul ca actualizarea a fost efectuata act.SeteazaNouaVersiune(this.utilizator.Item1, this.utilizator.Item2, CUtile.getCheieLicenta(), idMasina); act.Close(); this.lActualizareEfectuata = true; } } else { this.lActualizareEfectuata = true; } }
private void recupereazaModificari() { this.utilizator = CUtile.GetUtilizatorISTOMA(); this.masina = new BMasina(); Actualizari.ActualizariSoapClient act = new Actualizari.ActualizariSoapClient(); this.lModificariDisponibile = act.GetDescriereVersiuneDisponibila(this.utilizator.Item1, this.utilizator.Item2, CUtile.getCheieLicenta(), masina.Id); this.lExistaUpgradeDisponibil = act.ExistaActualizareDisponibila(this.utilizator.Item1, this.utilizator.Item2, CUtile.getCheieLicenta(), masina.Id); act.Close(); }