Atlas-Install/source/check_update.py

50 lines
2.2 KiB
Python

from tkinter import messagebox
import requests
import zipfile
import json
import sys
import os
from .definition import *
def check_update(self):
try:
gitversion = requests.get(VERSION_FILE_URL, allow_redirects=True).json()
with open("./version", "rb") as f:
locversion = json.load(f)
if ((float(gitversion["version"]) > float(locversion["version"])) or
(float(gitversion["version"]) == float(locversion["version"])) and
float(gitversion["subversion"]) > float(locversion["subversion"])):
if messagebox.askyesno(
self.translate("Mise à jour disponible !"),
self.translate("Une mise à jour est disponible, souhaitez-vous l'installer ?") +
f"\n\nVersion : {locversion['version']}.{locversion['subversion']} -> {gitversion['version']}.{gitversion['subversion']}\n"
f"Changelog :\n{gitversion['changelog']}"):
if not(os.path.exists("./Updater/Updater.exe")):
dl = requests.get(gitversion["updater_bin"], allow_redirects=True)
with open("./download.zip", "wb") as file:
print(self.translate("Téléchargement de Updater en cours..."))
file.write(dl.content)
print(self.translate("fin du téléchargement, "
"début de l'extraction..."))
with zipfile.ZipFile("./download.zip") as file:
file.extractall("./Updater/")
print(self.translate("fin de l'extraction"))
os.remove("./download.zip")
print(self.translate("lancement de l'application..."))
os.startfile(os.path.realpath("./Updater/Updater.exe"))
sys.exit()
except requests.ConnectionError:
messagebox.showwarning(self.translate("Attention"),
self.translate("Impossible de se connecter à internet. Le téléchargement sera "
"automatiquement désactivé."))
self.option["disable_download"] = True
except:
self.log_error()