mirror of
https://github.com/hyb-oyqq/FRAISEMOE-Addons-Installer-NEXT.git
synced 2025-12-16 20:10:28 +00:00
31 lines
1.2 KiB
Python
31 lines
1.2 KiB
Python
import os
|
|
import shutil
|
|
import py7zr
|
|
from PySide6.QtCore import QThread, Signal
|
|
from data.config import PLUGIN, GAME_INFO
|
|
|
|
class ExtractionThread(QThread):
|
|
finished = Signal(bool, str, str) # success, error_message, game_version
|
|
|
|
def __init__(self, _7z_path, game_folder, plugin_path, game_version, parent=None):
|
|
super().__init__(parent)
|
|
self._7z_path = _7z_path
|
|
self.game_folder = game_folder
|
|
self.plugin_path = plugin_path
|
|
self.game_version = game_version
|
|
|
|
def run(self):
|
|
try:
|
|
with py7zr.SevenZipFile(self._7z_path, mode="r") as archive:
|
|
archive.extractall(path=PLUGIN)
|
|
|
|
os.makedirs(self.game_folder, exist_ok=True)
|
|
shutil.copy(self.plugin_path, self.game_folder)
|
|
|
|
if self.game_version == "NEKOPARA After":
|
|
sig_path = os.path.join(PLUGIN, GAME_INFO[self.game_version]["sig_path"])
|
|
shutil.copy(sig_path, self.game_folder)
|
|
|
|
self.finished.emit(True, "", self.game_version)
|
|
except (py7zr.Bad7zFile, FileNotFoundError, Exception) as e:
|
|
self.finished.emit(False, f"\n文件操作失败,请重试\n\n【错误信息】:{e}\n", self.game_version) |