public static bool UpdateData() { /* * telecharger le fichier manifest * si DataGeneration > manifest.DataGeneration * signaler l'erreur a HubGovernor * sortir * si DataGeneration < manifest.DataGeneration * telecharger manifest.data * pour chaque entrées E dans manifest.data et tant que DataGeneration < manifest.DataGeneration * si DataGeneration == E.PreDataGeneration * Appliquer les maj des tables * mettre a jours DataGeneration */ string manifest = Path.GetTempFileName(); using (new AutoReleaser(() => File.Delete(manifest))) try { var netEngin = new NetEngin(Program.NetworkSettings); netEngin.Download(manifest, Urls.ManifestURL); IUpdateManifest updateManifest = UpdateEngin.ReadUpdateManifest(manifest); string log = "Recherche de mise à jour des données. Version actulle des données: " + $"{Program.Settings.DataGeneration}. "; if (updateManifest.DataGeneration == Program.Settings.DataGeneration) { Program.DialogManager.PostLog(log + " Les données sont à jour", false); return(true); } if (Program.Settings.UpdateKey != updateManifest.UpdateKey) { if (Program.Settings.UpdateKey == 0) { Program.Settings.UpdateKey = updateManifest.UpdateKey; } else { Log.LogEngin.PushFlash(AppText.ERR_UPDATEKEY); Dbg.Log("Update key mismatch!"); Program.DialogManager.PostLog(log + AppText.ERR_UPDATEKEY, true); return(false); } } //TODO: signaler l'erreur si DataGeneration < manifest.DataGeneration string dataManifest = Path.GetTempFileName(); using (Log.LogEngin.PushMessage("Installation des mises à jour...")) using (new AutoReleaser(() => File.Delete(dataManifest))) { netEngin.Download(dataManifest, Urls.DataManifestURL); var uris = new List <UpdateURI>(UpdateEngin.ReadDataManifest(dataManifest, Program.Settings.DataGeneration)); foreach (UpdateURI uu in uris.OrderBy(u => u.DataPreGeneration)) { if (uu.DataPreGeneration == Program.Settings.DataGeneration) { string updateFile = Path.GetTempFileName(); using (new AutoReleaser(() => File.Delete(updateFile))) { netEngin.Download(updateFile, Urls.DataUpdateDirURL + uu.FileURI); ApplyUpdate(updateFile); Program.Settings.DataGeneration = uu.DataPostGeneration; } } } DataUpdated?.Invoke(); } Program.DialogManager.PostLog(log + "Mises à jour installées. " + $"Nouvelle version des données: {Program.Settings.DataGeneration}", false); Assert(Program.Settings.DataGeneration == updateManifest.DataGeneration); } catch (Exception ex) { Dbg.Log("Data update: " + ex.Message); } return(true); }