# -*- coding: utf-8 -*- """把三份文档加进交付包。 用户要求: 许可协议 / 安装前必读(前信息)/ 安装后须知(后信息) 作者:小麦子 放在压缩包**顶层**,和 README.txt 并排 —— 这样解压第一眼就看到。 编码:UTF-8 with BOM + CRLF。 不带 BOM 的话,中文 Windows 的记事本会按 GBK 读,全乱; 不带 CRLF 的话,记事本里会挤成一行。 """ from __future__ import annotations import sys from pathlib import Path PKG = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote\_build" r"\package_remote.py") DOCS = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote\docs") ANCHOR = ''' # ---------- 4. 顶层说明 ---------- write_readme(build / "README.txt", TOP_README)''' NEW = ''' # ---------- 4. 顶层说明 ---------- write_readme(build / "README.txt", TOP_README) # ---------- 4b. 三份正式文档(作者:小麦子)---------- # 放顶层,和 README.txt 并排,解压第一眼就能看到。 # 统一转成 UTF-8 BOM + CRLF —— 不带 BOM 记事本会按 GBK 读,全乱。 doc_files = [ ("LICENSE.txt", "许可协议"), ("BEFORE-INSTALL.txt", "安装前必读"), ("AFTER-INSTALL.txt", "安装后须知"), ] for name, label in doc_files: src = DOCS / name if not src.is_file(): print(f" [警告] 缺少文档 {src}") continue # 读进来(原文件是无 BOM 的 UTF-8),交给 write_readme # 统一加 BOM + CRLF 后写出 write_readme(build / name, src.read_text(encoding="utf-8")) print(f" {label}: {name}")''' # 顶部说明里也提一下这三份文档 TOP_DOC_ANCHOR = '''【每台设备分别看哪个说明】''' TOP_DOC_NEW = '''【三份正式文档(作者:小麦子)】 LICENSE.txt 许可协议。**安装前请先看这个。** 里面有使用红线,重点是:只能管你自己的设备, 或者别人明确同意你管的设备。 BEFORE-INSTALL.txt 安装前必读(前信息)。 装机前对照检查、会改系统哪些东西、 杀毒软件可能报警怎么办。 AFTER-INSTALL.txt 安装后须知(后信息)。 怎么确认在运行、换配对码、彻底卸载、 连不上怎么排查。 【每台设备分别看哪个说明】''' def main() -> int: text = PKG.read_text(encoding="utf-8") ok = True if "BEFORE-INSTALL.txt" in text: print(" 已经加过三份文档") elif ANCHOR in text: text = text.replace(ANCHOR, NEW, 1) print(" 打包脚本:已加三份文档") else: print(" [失败] 找不到顶层说明的锚点") ok = False if TOP_DOC_ANCHOR in text and "三份正式文档" not in text: text = text.replace(TOP_DOC_ANCHOR, TOP_DOC_NEW, 1) print(" 顶层说明:已加三份文档的介绍") elif "三份正式文档" in text: print(" 顶层说明:已经提过") # 校验清单里加上文档 REQUIRED_ANCHOR = ''' build / "README.txt", ]''' REQUIRED_NEW = ''' build / "README.txt", build / "LICENSE.txt", build / "BEFORE-INSTALL.txt", build / "AFTER-INSTALL.txt", ]''' if "build / \"LICENSE.txt\"" not in text and REQUIRED_ANCHOR in text: text = text.replace(REQUIRED_ANCHOR, REQUIRED_NEW, 1) print(" 校验清单:已加三份文档") PKG.write_text(text, encoding="utf-8", newline="\n") import ast try: ast.parse(text) print(" package_remote.py 语法 OK") except SyntaxError as exc: print(f" 语法错误: {exc}") ok = False # 确认文档都在 for name in ("LICENSE.txt", "BEFORE-INSTALL.txt", "AFTER-INSTALL.txt"): path = DOCS / name size = path.stat().st_size if path.is_file() else 0 print(f" {name}: {size} 字节 {'✓' if size else '✗ 缺失'}") return 0 if ok else 1 if __name__ == "__main__": sys.exit(main())