# -*- coding: utf-8 -*- r"""应用名统一改成 ykxmz(用户:"直接改成 ykxmz")。 要改的地方: windows/lanremote/__init__.py APP_NAME = "局域网遥控 被控端" -> "ykxmz" installer/ykxmz.iss MyAppName -> "ykxmz" (安装向导标题、控制面板卸载项都用它) windows/version_info.txt EXE 属性里的产品名 顺带修测试脚本:不带 --code 时 setup_done 是 false, 程序会去弹设置窗口而不会静默监听,所以测试必须带 --code。 """ from __future__ import annotations import ast import sys from pathlib import Path ROOT = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote") INIT = ROOT / "windows" / "lanremote" / "__init__.py" ISS = ROOT / "installer" / "ykxmz.iss" VINFO = ROOT / "windows" / "version_info.txt" TEST = ROOT / "_build" / "test_pair_reopen.py" OLD_NAMES = ( "ykxmz 教室电脑手表遥控", "局域网遥控 被控端", "局域网遥控 · 被控端", "局域网遥控 被控端(Windows)", ) def main() -> int: ok = True # ---- 1. 内部应用名 ---- text = INIT.read_text(encoding="utf-8") if 'APP_NAME = "ykxmz"' in text: print(" __init__.py: 已经是 ykxmz") else: for old in OLD_NAMES: text = text.replace(f'"{old}"', '"ykxmz"') INIT.write_text(text, encoding="utf-8", newline="\n") print(" __init__.py: 应用名 -> ykxmz") # ---- 2. 安装包显示名 ---- itext = ISS.read_text(encoding="utf-8") if '#define MyAppName "ykxmz"' in itext: print(" ykxmz.iss: 已经是 ykxmz") else: for old in OLD_NAMES: itext = itext.replace(f'#define MyAppName "{old}"', '#define MyAppName "ykxmz"') ISS.write_text(itext, encoding="utf-8", newline="\r\n") print(" ykxmz.iss: 安装向导显示名 -> ykxmz") # ---- 3. EXE 版本信息里的产品名 ---- if VINFO.is_file(): vtext = VINFO.read_text(encoding="utf-8") changed = False for old in OLD_NAMES: if f'"{old}"' in vtext: vtext = vtext.replace(f'"{old}"', '"ykxmz"') changed = True if changed: VINFO.write_text(vtext, encoding="utf-8", newline="\n") print(" version_info.txt: 产品名 -> ykxmz") # ---- 4. 测试脚本:必须带 --code ---- ttext = TEST.read_text(encoding="utf-8") old = ''' [sys.executable, "run_agent.py", "--port", str(PORT), "--new-code"],''' new = ''' # 必须带 --code:不然 setup_done 是 false, # 程序会去弹设置窗口(需要桌面),根本不会静默监听端口。 [sys.executable, "run_agent.py", "--port", str(PORT), "--code", "135790", "--silent"],''' if old in ttext: TEST.write_text(ttext.replace(old, new, 1), encoding="utf-8", newline="\n") print(" 测试脚本: 改成带 --code --silent 启动") # ---- 复核 ---- print() checks = [ (INIT, 'APP_NAME = "ykxmz"', "内部应用名"), (ISS, '#define MyAppName "ykxmz"', "安装包显示名"), (TEST, '"--code", "135790"', "测试启动参数"), ] for path, needle, label in checks: got = needle in path.read_text(encoding="utf-8") print(f" {label}: {'✓' if got else '✗'}") ok = ok and got for path, label in ((INIT, "__init__.py"), (TEST, "测试脚本")): try: ast.parse(path.read_text(encoding="utf-8")) print(f" {label} 语法 OK") except SyntaxError as exc: print(f" [失败] {label} 语法错误: 行 {exc.lineno}: {exc.msg}") ok = False return 0 if ok else 1 if __name__ == "__main__": sys.exit(main())