# -*- coding: utf-8 -*- r'''最小复现:只解压两个 zip,看进程会不会被杀。 线索:test_package_remote.py 有时跑 1.6 秒、只打印一行"一、解压"就没了, 退出码 -1。1.6 秒正好是解压 18.85 MB / 1001 个文件的时间, 所以要确认"是不是解压这一步出的事"。 每一步都 flush 打印,这样即使被杀也能看到死在哪一行。 ''' from __future__ import annotations import shutil import sys import tempfile import time import zipfile from pathlib import Path ROOT = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote") AGENT = ROOT / "dist" / "ykxmz-agent-1.8.2.zip" SERVER = ROOT / "dist" / "ykxmz-server-1.8.2.zip" def say(msg: str) -> None: print(" %s" % msg, flush=True) def main() -> int: work = Path(tempfile.mkdtemp(prefix="dbg_extract_")) say("工作目录 %s" % work) for label, path in (("被控端", AGENT), ("服务器端", SERVER)): say("准备解压 %s (%s)" % (label, path.name)) say(" 文件存在: %s 大小 %.2f MB" % (path.is_file(), path.stat().st_size / 1024 / 1024)) t0 = time.time() with zipfile.ZipFile(path) as z: names = z.namelist() say(" 条目数 %d" % len(names)) for i, name in enumerate(names): z.extract(name, work) if i % 200 == 0: say(" ... 已解压 %d/%d(%.1fs)" % (i, len(names), time.time() - t0)) say(" %s 解压完成,用了 %.1f 秒" % (label, time.time() - t0)) say("全部解压完成") agent_dir = work / AGENT.stem exe = agent_dir / "ykxmz.exe" say("ykxmz.exe 在不在: %s" % exe.is_file()) if exe.is_file(): say(" exe 大小 %.2f MB" % (exe.stat().st_size / 1024 / 1024)) say("存活检查:睡 3 秒") time.sleep(3) say("还活着 ✓") shutil.rmtree(work, ignore_errors=True) say("清理完成,正常退出") return 0 if __name__ == "__main__": sys.exit(main())