fix install_update.py tk thread shit

This commit is contained in:
Headshotnoby 2021-06-22 19:55:15 -04:00
parent cd3def12b1
commit 4097451216

View File

@ -1,4 +1,4 @@
import zipfile, tarfile, platform, os, time, shutil import zipfile, tarfile, platform, os, time, shutil, thread
from Tkinter import Tk, HORIZONTAL from Tkinter import Tk, HORIZONTAL
from ttk import Label, Progressbar from ttk import Label, Progressbar
@ -8,16 +8,18 @@ ext = {
"Linux": "gz" "Linux": "gz"
} }
def extractzip(progressbar): # Windows and Mac
def extractzip(): # Mac
archive = zipfile.ZipFile("update.zip") archive = zipfile.ZipFile("update.zip")
if platform.system() == "Darwin": shutil.rmtree("AO2XP.app", ignore_errors=True) # delete the old app package. if platform.system() == "Darwin": shutil.rmtree("AO2XP.app", ignore_errors=True) # delete the old app package.
archive.extractall() # extract the new version #archive.extractall() # extract the new version
for i in range(len(archive.filelist)):
archive.extract(archive.filelist[i])
progressbar["value"] = 100. * i / len(archive.filelist)
if os.path.exists("appbase"): # on a mac with the base folder moved out of .app Resources folder if os.path.exists("appbase"): # on a mac with the base folder moved out of .app Resources folder
os.system("mv appbase AO2XP.app/Contents/Resources/") # put it back in place os.system("mv appbase AO2XP.app/Contents/Resources/") # put it back in place
def extractgz(): # Linux def extractgz(progressbar): # Linux
archive = tarfile.open("update.tar.gz") archive = tarfile.open("update.tar.gz")
archive.extractall() archive.extractall()
@ -26,20 +28,29 @@ if os.path.exists("update." + ext[platform.system()]):
window = Tk() window = Tk()
window.title("AO2XP updater") window.title("AO2XP updater")
window.wm_resizable(0,0) window.wm_resizable(0,0)
window.geometry("256x56") window.geometry("256x64")
lb = Label(window) lb = Label(window)
lb.pack() lb.pack()
pb = Progressbar(orient=HORIZONTAL, mode="indeterminate") pb = Progressbar(window, orient=HORIZONTAL, length=100, mode="indeterminate")
pb.pack() pb.pack(fill="x")
pb.start() pb.start()
lb["text"] = "Waiting 3 seconds for AO2XP to close..." def extractThread():
time.sleep(3) time.sleep(0.1)
lb["text"] = "Extracting update." + ext[platform.system()] + "..." lb["text"] = "Waiting 3 seconds for AO2XP to close..."
globals()["extract" + ext[platform.system()]]() # call the extract function according to OS time.sleep(3)
lb["text"] = "Done!\nYou can now start AO2XP." pb.stop()
os.remove("update." + ext[platform.system()]) pb["value"] = 0
time.sleep(4) pb["mode"] = "determinate"
lb["text"] = "Extracting update." + ext[platform.system()] + "..."
globals()["extract" + ext[platform.system()]](pb) # call the extract function according to OS
lb["text"] = "Done!\nYou can now start AO2XP."
os.remove("update." + ext[platform.system()])
time.sleep(4)
window.destroy()
thread.start_new_thread(extractThread, ())
window.mainloop()
else: else:
print "This program will be automatically run by AO2XP to apply updates.\nYou do not need to run this yourself." print "This program will be automatically run by AO2XP to apply updates.\nYou do not need to run this yourself."