mirror of
https://github.com/moesnow/March7thAssistant.git
synced 2026-08-03 08:47:01 +08:00
## 主要改动 ### 1. 更新系统架构重构 - 将单文件 `updater.py` 拆分为 `module/update/` 下的独立模块: - `version_check.py` - 版本检查和更新检测逻辑 - `update_engine.py` - 更新引擎核心逻辑 - `downloader.py` - 文件下载器(支持断点续传) - `extractor.py` - 文件解压器(支持 7z 格式) - `download_proxy.py` - 代理配置处理 - `helper_app.py` - 辅助应用管理 - `update_window.py` - 更新进度窗口 ### 2. 新增 7z 解压支持 - 添加 `py7zr` 依赖用于处理 7z 格式压缩包 - 同步更新 `pyproject.toml` 和 `requirements.txt` - 更新 `uv.lock` 锁定文件 ### 3. 任务系统适配 - 新增 `tasks/version/app_update.py` 应用更新任务 - 重构 `tasks/version/__init__.py` 适配新模块接口 - 更新 `utils/tasks.py` 添加新任务支持 ### 4. 本地化更新 - 更新全部 5 个语言文件: - zh_CN.json - 简体中文 - zh_TW.json - 繁体中文 - en_US.json - 英语 - ja_JP.json - 日语 - ko_KR.json - 韩语 - 新增更新相关的翻译字符串 ### 5. 构建配置调整 - 更新 `March7th Updater.spec` 适配新模块结构 ### 6. 界面适配 - 更新 `app/tools/check_update.py` 检查更新界面适配新接口 - 更新 `main.py` 添加新的初始化逻辑 ## 影响 - 提高代码可维护性和可测试性 - 支持更多压缩格式 - 更好的模块化设计
61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
"""命令行更新入口。
|
|
|
|
检测到新版本后启动 March7th Updater.exe 进行完整更新。
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
from module.config import cfg
|
|
from module.logger import log
|
|
from module.localization import tr
|
|
from module.update.update_engine import build_independent_process_env
|
|
from module.update.version_check import check_for_update
|
|
|
|
|
|
def start():
|
|
log.hr(tr("开始更新三月七小助手"), 0)
|
|
try:
|
|
source = getattr(cfg, "update_source", "GitHub")
|
|
cdk = getattr(cfg, "mirrorchyan_cdk", "")
|
|
prerelease = bool(getattr(cfg, "update_prerelease_enable", False))
|
|
log.debug(f"更新配置: source={source}, cdk={'***' if cdk else 'empty'}, prerelease={prerelease}")
|
|
|
|
info = check_for_update(source, cdk, prerelease)
|
|
if info is None:
|
|
log.info(tr("当前已是最新版本"))
|
|
log.hr(tr("完成"), 2)
|
|
return
|
|
|
|
log.info(f"{tr('发现新版本')}: {info.version} ({info.source})")
|
|
log.debug(f"下载URL: {info.url[:80]}..., 文件名: {info.file_name}")
|
|
|
|
# 启动更新程序
|
|
updater = os.path.abspath("./March7th Updater.exe")
|
|
if not os.path.exists(updater):
|
|
log.error(tr("未找到更新程序 March7th Updater.exe"))
|
|
log.hr(tr("完成"), 2)
|
|
return
|
|
|
|
log.info(tr("启动更新器"))
|
|
creationflags = (
|
|
getattr(subprocess, "DETACHED_PROCESS", 0)
|
|
| getattr(subprocess, "CREATE_NEW_PROCESS_GROUP", 0)
|
|
)
|
|
command = [updater, info.url, info.file_name]
|
|
if info.sha256:
|
|
command.extend(["--sha256", info.sha256])
|
|
subprocess.Popen(
|
|
command,
|
|
creationflags=creationflags,
|
|
env=build_independent_process_env(),
|
|
close_fds=True,
|
|
)
|
|
sys.exit(0)
|
|
|
|
except Exception as e:
|
|
log.error(f"{tr('更新失败')}: {e}")
|
|
log.hr(tr("完成"), 2)
|