From 5d3ee2e09dddfb20517c084aea6cc03529b72ff4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E5=BC=BA?= <357099073@qq.com>
Date: Mon, 13 Apr 2026 15:04:47 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dstorage.json=E6=8A=A5?=
=?UTF-8?q?=E9=94=99=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
layout/main.ui | 10 ++++++++++
main.py | 32 ++++++++++++++++++++++++++++++--
2 files changed, 40 insertions(+), 2 deletions(-)
diff --git a/layout/main.ui b/layout/main.ui
index 5645152..571b8d5 100644
--- a/layout/main.ui
+++ b/layout/main.ui
@@ -140,6 +140,16 @@
+ -
+
+
+ 🔧 应急检修,用户勿点
+
+
+ 30
+
+
+
-
diff --git a/main.py b/main.py
index 3df51a6..695a5db 100644
--- a/main.py
+++ b/main.py
@@ -195,13 +195,13 @@ def update_vsdb_token(config_dir, new_token, new_email, log_callback):
"UPDATE ItemTable SET value = ? WHERE key = ?",
(value, key)
)
- log_callback(f"✓ 更新了 {key}")
+ # log_callback(f"✓ 更新了 {key}")
else:
cursor.execute(
"INSERT INTO ItemTable (key, value) VALUES (?, ?)",
(key, value)
)
- log_callback(f"✓ 插入了 {key}")
+ # log_callback(f"✓ 插入了 {key}")
conn.commit()
conn.close()
@@ -553,6 +553,12 @@ class ChangeTokenThread(QThread):
self.finished_signal.emit(False, "未找到 storage.json 文件")
return
+ # 检查并修复只读属性
+ if not os.access(storage_file, os.W_OK):
+ self.log_signal.emit("🔓 检测到文件只读,正在解除只读属性...")
+ import stat
+ storage_file.chmod(storage_file.stat().st_mode | stat.S_IWRITE)
+
# 读取原文件
self.log_signal.emit("📖 读取配置文件...")
with open(storage_file, "r", encoding="utf-8") as f:
@@ -765,6 +771,7 @@ class MainWindow(QMainWindow):
self.btnClearLog = self.findChild(QPushButton, "btnClearLog")
self.btnDonate = self.findChild(QPushButton, "btnDonate")
self.btnCheckUpdate = self.findChild(QPushButton, "btnCheckUpdate")
+ self.btnEmergencyRepair = self.findChild(QPushButton, "btnEmergencyRepair")
# 调试信息
print(f"txtToken: {self.txtToken}")
@@ -791,6 +798,8 @@ class MainWindow(QMainWindow):
self.btnDonate.clicked.connect(self.on_donate_clicked)
if self.btnCheckUpdate:
self.btnCheckUpdate.clicked.connect(self.on_check_update_clicked)
+ if self.btnEmergencyRepair:
+ self.btnEmergencyRepair.clicked.connect(self.on_emergency_repair_clicked)
# 设置版本号显示在状态栏右侧
self.statusBar().addPermanentWidget(QLabel(f"Version: {__VERSION__}"))
@@ -1041,6 +1050,25 @@ class MainWindow(QMainWindow):
dialog = DonateDialog(self)
dialog.exec()
+ def on_emergency_repair_clicked(self):
+ """应急检修:下载工具到桌面"""
+ import urllib.request
+ import threading
+
+ url = "http://7colud.yunzer.cn/software/db%20browser%20for%20sqlite.zip"
+ desktop = Path.home() / "Desktop"
+ save_path = desktop / "db browser for sqlite.zip"
+
+ def download():
+ try:
+ self.log("🔧 正在下载检修工具...")
+ urllib.request.urlretrieve(url, str(save_path))
+ self.log(f"✅ 下载完成,已保存到桌面:{save_path.name}")
+ except Exception as e:
+ self.log(f"❌ 下载失败: {e}")
+
+ threading.Thread(target=download, daemon=True).start()
+
def on_change_finished(self, success, message):
if self.btnChange:
self.btnChange.setEnabled(True)