👍️[Update] Controller : software update の処理を追加

This commit is contained in:
misyaguziya
2024-10-07 10:37:45 +09:00
parent 9abf8742f7
commit 94889f5b30
3 changed files with 37 additions and 86 deletions

View File

@@ -351,61 +351,25 @@ class Model:
return update_flag
@staticmethod
def updateSoftware(restart:bool=True, download=None, update=None):
def updateSoftwareTask():
filename = 'VRCT.zip'
program_name = 'VRCT.exe'
folder_name = '_internal'
tmp_directory_name = 'tmp'
batch_name = 'update.bat'
def updateSoftware():
try:
program_name = "updater.exe"
release_url = "https://api.github.com/repos/misyaguziya/VRCT_updater/releases/latest"
current_directory = config.PATH_LOCAL
res = requests_get(release_url)
assets = res.json()['assets']
url = [i["browser_download_url"] for i in assets if i["name"] == program_name][0]
try:
res = requests_get(config.GITHUB_URL)
assets = res.json()['assets']
url = [i["browser_download_url"] for i in assets if i["name"] == filename][0]
with tempfile.TemporaryDirectory() as tmp_path:
res = requests_get(url, stream=True)
file_size = int(res.headers.get('content-length', 0))
total_chunk = 0
with open(os_path.join(tmp_path, filename), 'wb') as file:
for chunk in res.iter_content(chunk_size=1024*5):
file.write(chunk)
total_chunk += len(chunk)
if isinstance(download, Callable):
download(total_chunk/file_size)
print(f"downloaded {total_chunk}/{file_size}")
res = requests_get(url, stream=True)
with open(os_path.join(current_directory, program_name), 'wb') as file:
for chunk in res.iter_content(chunk_size=1024*5):
file.write(chunk)
except Exception:
import traceback
with open('error.log', 'a') as f:
traceback.print_exc(file=f)
with ZipFile(os_path.join(tmp_path, filename)) as zf:
total_files = len(zf.infolist())
extracted_files = 0
for file_info in zf.infolist():
extracted_files += 1
zf.extract(file_info, os_path.join(current_directory, tmp_directory_name))
if isinstance(update, Callable):
update(extracted_files/total_files)
print(f"extracted {extracted_files}/{total_files}")
copyfile(os_path.join(current_directory, folder_name, "batch", batch_name), os_path.join(current_directory, batch_name))
command = [os_path.join(current_directory, batch_name), program_name, folder_name, tmp_directory_name, str(restart)]
Popen(command, cwd=current_directory)
except Exception:
import traceback
with open('error.log', 'a') as f:
traceback.print_exc(file=f)
webbrowser.open(config.BOOTH_URL, new=2, autoraise=True)
th_update_software = Thread(target=updateSoftwareTask)
th_update_software.daemon = True
th_update_software.start()
@staticmethod
def reStartSoftware():
program_name = 'VRCT.exe'
folder_name = '_internal'
batch_name = 'restart.bat'
current_directory = config.PATH_LOCAL
copyfile(os_path.join(current_directory, folder_name, "batch", batch_name), os_path.join(current_directory, batch_name))
command = [os_path.join(current_directory, batch_name), program_name]
command = [current_directory, program_name]
Popen(command, cwd=current_directory)
def getListMicHost(self):