mirror of
https://github.com/hyb-oyqq/FRAISEMOE-Addons-Installer-NEXT.git
synced 2025-12-21 06:18:36 +00:00
feat(core): 优化安装结果显示和下载管理
- 优化 Cloudflare 加速提示信息格式 - 增加下载历史记录列表,跟踪本次安装的游戏 - 改进安装结果显示,区分不同情况 - 优化哈希检查提示信息
This commit is contained in:
@@ -142,6 +142,9 @@ class DownloadManager:
|
|||||||
# 禁用开始安装按钮
|
# 禁用开始安装按钮
|
||||||
self.main_window.ui.start_install_btn.setEnabled(False)
|
self.main_window.ui.start_install_btn.setEnabled(False)
|
||||||
|
|
||||||
|
# 清空下载历史记录
|
||||||
|
self.main_window.download_queue_history = []
|
||||||
|
|
||||||
# 显示哈希检查窗口
|
# 显示哈希检查窗口
|
||||||
self.main_window.hash_msg_box = self.main_window.hash_manager.hash_pop_window(check_type="pre")
|
self.main_window.hash_msg_box = self.main_window.hash_manager.hash_pop_window(check_type="pre")
|
||||||
|
|
||||||
@@ -185,7 +188,7 @@ class DownloadManager:
|
|||||||
# 询问用户是否使用Cloudflare加速
|
# 询问用户是否使用Cloudflare加速
|
||||||
msg_box = QtWidgets.QMessageBox(self.main_window)
|
msg_box = QtWidgets.QMessageBox(self.main_window)
|
||||||
msg_box.setWindowTitle(f"下载优化 - {APP_NAME}")
|
msg_box.setWindowTitle(f"下载优化 - {APP_NAME}")
|
||||||
msg_box.setText("是否愿意通过Cloudflare加速来优化下载速度?\n\n这将临时修改系统的hosts文件,并需要管理员权限。如您的杀毒软件提醒有软件正在修改hosts文件,请注意放行。")
|
msg_box.setText("是否愿意通过Cloudflare加速来优化下载速度?\n\n这将临时修改系统的hosts文件,并需要管理员权限。\n如您的杀毒软件提醒有软件正在修改hosts文件,请注意放行。")
|
||||||
|
|
||||||
# 设置Cloudflare图标
|
# 设置Cloudflare图标
|
||||||
cf_icon_path = resource_path("IMG/ICO/cloudflare_logo_icon.ico")
|
cf_icon_path = resource_path("IMG/ICO/cloudflare_logo_icon.ico")
|
||||||
@@ -221,6 +224,10 @@ class DownloadManager:
|
|||||||
# 清空现有队列
|
# 清空现有队列
|
||||||
self.download_queue.clear()
|
self.download_queue.clear()
|
||||||
|
|
||||||
|
# 创建下载历史记录列表,用于跟踪本次安装的游戏
|
||||||
|
if not hasattr(self.main_window, 'download_queue_history'):
|
||||||
|
self.main_window.download_queue_history = []
|
||||||
|
|
||||||
# 添加nekopara 1-4
|
# 添加nekopara 1-4
|
||||||
for i in range(1, 5):
|
for i in range(1, 5):
|
||||||
game_version = f"NEKOPARA Vol.{i}"
|
game_version = f"NEKOPARA Vol.{i}"
|
||||||
@@ -231,6 +238,8 @@ class DownloadManager:
|
|||||||
_7z_path = os.path.join(PLUGIN, f"vol.{i}.7z")
|
_7z_path = os.path.join(PLUGIN, f"vol.{i}.7z")
|
||||||
plugin_path = os.path.join(PLUGIN, GAME_INFO[game_version]["plugin_path"])
|
plugin_path = os.path.join(PLUGIN, GAME_INFO[game_version]["plugin_path"])
|
||||||
self.download_queue.append((url, game_folder, game_version, _7z_path, plugin_path))
|
self.download_queue.append((url, game_folder, game_version, _7z_path, plugin_path))
|
||||||
|
# 记录到下载历史
|
||||||
|
self.main_window.download_queue_history.append(game_version)
|
||||||
|
|
||||||
# 添加nekopara after
|
# 添加nekopara after
|
||||||
game_version = "NEKOPARA After"
|
game_version = "NEKOPARA After"
|
||||||
@@ -241,6 +250,8 @@ class DownloadManager:
|
|||||||
_7z_path = os.path.join(PLUGIN, "after.7z")
|
_7z_path = os.path.join(PLUGIN, "after.7z")
|
||||||
plugin_path = os.path.join(PLUGIN, GAME_INFO[game_version]["plugin_path"])
|
plugin_path = os.path.join(PLUGIN, GAME_INFO[game_version]["plugin_path"])
|
||||||
self.download_queue.append((url, game_folder, game_version, _7z_path, plugin_path))
|
self.download_queue.append((url, game_folder, game_version, _7z_path, plugin_path))
|
||||||
|
# 记录到下载历史
|
||||||
|
self.main_window.download_queue_history.append(game_version)
|
||||||
|
|
||||||
def _start_ip_optimization(self, url):
|
def _start_ip_optimization(self, url):
|
||||||
"""开始IP优化过程
|
"""开始IP优化过程
|
||||||
|
|||||||
@@ -299,18 +299,65 @@ class MainWindow(QMainWindow):
|
|||||||
QTimer.singleShot(100, self.show_result)
|
QTimer.singleShot(100, self.show_result)
|
||||||
|
|
||||||
def show_result(self):
|
def show_result(self):
|
||||||
"""显示安装结果"""
|
"""显示安装结果,区分不同情况"""
|
||||||
installed_version = "\n".join(
|
# 获取当前安装状态
|
||||||
[i for i in self.installed_status if self.installed_status[i]]
|
installed_versions = [] # 成功安装的版本
|
||||||
)
|
skipped_versions = [] # 已有补丁跳过的版本
|
||||||
failed_ver = "\n".join(
|
failed_versions = [] # 安装失败的版本
|
||||||
[i for i in self.installed_status if not self.installed_status[i]]
|
not_found_versions = [] # 未找到的版本
|
||||||
)
|
|
||||||
|
# 获取所有游戏版本路径
|
||||||
|
install_paths = self.download_manager.get_install_paths() if hasattr(self.download_manager, "get_install_paths") else {}
|
||||||
|
|
||||||
|
for game_version, is_installed in self.installed_status.items():
|
||||||
|
path = install_paths.get(game_version, "")
|
||||||
|
|
||||||
|
# 检查游戏是否存在但未通过本次安装补丁
|
||||||
|
if is_installed:
|
||||||
|
# 游戏已安装补丁
|
||||||
|
if hasattr(self, 'download_queue_history') and game_version not in self.download_queue_history:
|
||||||
|
# 已有补丁,被跳过下载
|
||||||
|
skipped_versions.append(game_version)
|
||||||
|
else:
|
||||||
|
# 本次成功安装
|
||||||
|
installed_versions.append(game_version)
|
||||||
|
else:
|
||||||
|
# 游戏未安装补丁
|
||||||
|
if os.path.exists(path):
|
||||||
|
# 游戏文件夹存在,但安装失败
|
||||||
|
failed_versions.append(game_version)
|
||||||
|
else:
|
||||||
|
# 游戏文件夹不存在
|
||||||
|
not_found_versions.append(game_version)
|
||||||
|
|
||||||
|
# 构建结果信息
|
||||||
|
result_text = f"\n安装结果:\n"
|
||||||
|
|
||||||
|
# 总数统计
|
||||||
|
total_installed = len(installed_versions)
|
||||||
|
total_skipped = len(skipped_versions)
|
||||||
|
total_failed = len(failed_versions)
|
||||||
|
|
||||||
|
result_text += f"安装成功:{total_installed} 个 已跳过:{total_skipped} 个 安装失败:{total_failed} 个\n\n"
|
||||||
|
|
||||||
|
# 详细列表
|
||||||
|
if installed_versions:
|
||||||
|
result_text += f"【成功安装】:\n{chr(10).join(installed_versions)}\n\n"
|
||||||
|
|
||||||
|
if skipped_versions:
|
||||||
|
result_text += f"【已安装跳过】:\n{chr(10).join(skipped_versions)}\n\n"
|
||||||
|
|
||||||
|
if failed_versions:
|
||||||
|
result_text += f"【安装失败】:\n{chr(10).join(failed_versions)}\n\n"
|
||||||
|
|
||||||
|
if not_found_versions and (installed_versions or failed_versions):
|
||||||
|
# 只有当有其他版本存在时,才显示未找到的版本
|
||||||
|
result_text += f"【未在指定目录找到】:\n{chr(10).join(not_found_versions)}\n"
|
||||||
|
|
||||||
QMessageBox.information(
|
QMessageBox.information(
|
||||||
self,
|
self,
|
||||||
f"完成 - {APP_NAME}",
|
f"安装完成 - {APP_NAME}",
|
||||||
f"\n安装结果:\n安装成功数:{len(installed_version.splitlines())} 安装失败数:{len(failed_ver.splitlines())}\n"
|
result_text
|
||||||
f"安装成功的版本:\n{installed_version}\n尚未持有或未使用本工具安装补丁的版本:\n{failed_ver}\n",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def closeEvent(self, event):
|
def closeEvent(self, event):
|
||||||
|
|||||||
@@ -113,9 +113,9 @@ class HashManager:
|
|||||||
if check_type == "pre":
|
if check_type == "pre":
|
||||||
message = "\n正在检查游戏文件以确定需要安装的补丁...\n"
|
message = "\n正在检查游戏文件以确定需要安装的补丁...\n"
|
||||||
elif check_type == "after":
|
elif check_type == "after":
|
||||||
message = "\n正在检验文件完整性...\n"
|
message = "\n正在检验本地文件完整性...\n"
|
||||||
elif check_type == "extraction":
|
elif check_type == "extraction":
|
||||||
message = "\n正在验证解压文件的完整性...\n"
|
message = "\n正在验证下载的解压文件完整性...\n"
|
||||||
|
|
||||||
msg_box = msgbox_frame(f"通知 - {APP_NAME}", message)
|
msg_box = msgbox_frame(f"通知 - {APP_NAME}", message)
|
||||||
msg_box.open()
|
msg_box.open()
|
||||||
|
|||||||
Reference in New Issue
Block a user