[patch] 优化版本管理显示 与 更新提示(修改表名信息) 修复因线程安全问题导致的崩溃
This commit is contained in:
50
main.py
50
main.py
@@ -753,24 +753,38 @@ class LoginWindow(QMainWindow):
|
||||
self.add_log(f"🔔 准备显示更新通知: v{latest_version}", "INFO")
|
||||
self.add_log(f" 下载地址: {download_url if download_url else '(空)'}", "INFO")
|
||||
|
||||
# 读取更新内容
|
||||
update_content = self._get_update_content(latest_version)
|
||||
|
||||
# 检查下载地址
|
||||
if not download_url or download_url.strip() == "":
|
||||
# 下载地址为空,只显示通知,不提供下载
|
||||
message = f"发现新版本 {latest_version}!\n\n"
|
||||
if update_content:
|
||||
message += f"更新内容:\n{update_content}\n\n"
|
||||
message += "下载地址暂未配置,请稍后再试或联系管理员。"
|
||||
|
||||
QMessageBox.information(
|
||||
self,
|
||||
"版本更新",
|
||||
f"发现新版本 {latest_version}!\n\n"
|
||||
f"下载地址暂未配置,请稍后再试或联系管理员。",
|
||||
message,
|
||||
QMessageBox.Ok
|
||||
)
|
||||
self.add_log(f"⚠️ 新版本 {latest_version} 的下载地址为空,已通知用户", "WARNING")
|
||||
return # 安全返回,不崩溃
|
||||
|
||||
# 下载地址有效,显示更新对话框
|
||||
message = f"发现新版本 {latest_version},是否立即更新?\n\n"
|
||||
|
||||
if update_content:
|
||||
message += f"更新内容:\n{update_content}\n\n"
|
||||
|
||||
message += "点击确定将打开下载页面。"
|
||||
|
||||
reply = QMessageBox.question(
|
||||
self,
|
||||
"版本更新",
|
||||
f"发现新版本 {latest_version},是否立即更新?\n\n点击确定将打开下载页面。",
|
||||
message,
|
||||
QMessageBox.Yes | QMessageBox.No,
|
||||
QMessageBox.Yes
|
||||
)
|
||||
@@ -786,6 +800,36 @@ class LoginWindow(QMainWindow):
|
||||
self.add_log(f"❌ 显示更新通知失败: {e}", "ERROR")
|
||||
import traceback
|
||||
self.add_log(f"详细错误: {traceback.format_exc()}", "ERROR")
|
||||
|
||||
def _get_update_content(self, version):
|
||||
"""获取版本更新内容"""
|
||||
try:
|
||||
import json
|
||||
version_file = "version_history.json"
|
||||
|
||||
if not os.path.exists(version_file):
|
||||
return ""
|
||||
|
||||
with open(version_file, 'r', encoding='utf-8') as f:
|
||||
history = json.load(f)
|
||||
|
||||
# 查找对应版本
|
||||
for record in history:
|
||||
if record.get('version') == version:
|
||||
content = record.get('content', '')
|
||||
# 去掉 [patch]/[minor]/[major] 标记
|
||||
import re
|
||||
content = re.sub(r'\[(patch|minor|major)\]\s*', '', content, flags=re.IGNORECASE)
|
||||
# 限制长度
|
||||
if len(content) > 150:
|
||||
content = content[:150] + "..."
|
||||
return content
|
||||
|
||||
return ""
|
||||
|
||||
except Exception as e:
|
||||
self.add_log(f"⚠️ 读取更新内容失败: {e}", "DEBUG")
|
||||
return ""
|
||||
|
||||
def trigger_update(self, download_url, latest_version):
|
||||
"""触发更新下载"""
|
||||
|
||||
Reference in New Issue
Block a user