Files
douyin-pc/docs/2026-09-06-12-35-windows-install-build-guide.md
T

7.7 KiB
Raw Blame History

Windows 安装、验收与空白开发环境构建说明

本文为 0.1.0 历史指南。0.1.1 已改为只填写名称、登录后自动回填资料;0.1.2 已迁移到 fingerprint-chromium + Patchright。当前依赖、构建步骤和安装包见 0.1.2 迁移与验证记录

普通用户:只安装一个包

Windows 桌面 抖音账号助手-0.1.0 文件夹内,运行:

DouyinAccounts-0.1.0-Windows-x64-Setup.exe

这是 Windows 10/11 x64 中文安装程序,包含全部应用运行环境及浏览器。无需执行 pip、安装 Python/Node/Qt/Playwright、配置 CDP 全局服务或下载浏览器。安装不启动自动业务。

没有替用户执行该安装程序。详细行为与风险见同目录 使用说明.txt

  • 安装目录:%LOCALAPPDATA%\Programs\DouyinAccounts
  • 数据目录:%LOCALAPPDATA%\DouyinAccounts,与安装位置分离。
  • 默认先用本机官方 Chrome,没有时从安装目录 browser\chrome-win64\chrome.exe 查找随包 Chrome。
  • 首次需自己登录各个独立浏览器,不能自动复用其他浏览器的 Cookie。
  • 目前账号登记需要数字 UID,不是抖音号或主页链接。
  • 软件打开只加载配置,不自动执行。规则默认关闭,确认配置后勾选大号并启动。
  • 停止保留 Chrome;关闭 Chrome 和删除登录数据需单独操作。
  • 卸载按脚本设计保留账号数据;实际卸载、覆盖升级与易用性待用户验收。
  • 本版尚未签名,遇到未知发布者提示先核对 SHA256,不要关闭系统防护。

人工验收建议

  1. 安装向导中文是否清楚、桌面快捷方式是否可用、字体与窗口缩放是否正常。
  2. 不安装 Python/Node 的环境能否启动;没有系统 Chrome 时能否打开随包浏览器。
  3. 添加、手动登录、身份核验错误提示是否易懂;确认任何身份不匹配时没有动作。
  4. 多账号目录与组归属是否一目了然;切换、停止、关闭、删除的二次确认是否清楚。
  5. 自己的/获授权的测试账号间验证一条通知 → 一个小号 → 按规则执行;避免向无关用户发送验收消息。
  6. 待核对结果先到平台人工确认,不重复点击发送;核对界面的文案是否易懂。
  7. 退出重开后账号和上次选择是否保留;不会自动恢复发送。
  8. 覆盖安装/卸载后账号数据是否按预期保留。测试前先退出应用、关闭账号浏览器并备份数据目录。

开发者:从空白 Windows 构建

以下仅供开发/维护者;不是普通用户安装步骤

1. 必要工具

  • Windows x64;官方 Python 3.12 x64(验证版本)。
  • 项目源码。
  • Inno Setup 6.7.3,仅构建安装包使用。
  • 构建时网络访问 Python 包镜像及 Google Chrome for Testing 下载源。

Python 从 https://www.python.org/downloads/windows/ 安装。Inno Setup 官方 release、校验值和签名检查过程在开发交付记录中,不要使用来历不明的镜像可执行文件。Inno 可安装到当前用户,不需要把构建工具加入最终产品。

2. 安装固定构建依赖

在源码目录的 PowerShell 执行:

py -3.12 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements-build-windows.txt

运行依赖固定在 requirements-desktop.txt,构建依赖固定在 requirements-build-windows.txt

3. 先运行离线测试

.\.venv\Scripts\python.exe -m unittest discover -s src -v
.\.venv\Scripts\python.exe src\accounts_app.py --smoke-test "$PWD\smoke-source.json"

SDK JavaScript 合约测试需要 Node;这是开发测试依赖,不是产品使用依赖。可以用已安装的 Node,或将 Playwright 自带驱动目录临时加入本次 PowerShell 的 PATH

$env:PATH = "$PWD\.venv\Lib\site-packages\playwright\driver;$env:PATH"
.\.venv\Scripts\python.exe src\test_subscribe_notifications.py

单元测试从不发送真实关注/私信。冒烟入口使用临时空数据目录,不自动创建业务账号。

4. 原生构建

.\.venv\Scripts\python.exe build_windows.py

如果 Inno 安装在自定义位置:

.\.venv\Scripts\python.exe build_windows.py --iscc 'D:\Tools\Inno Setup 6\ISCC.exe'

流程:

  1. 读取 packaging/chrome-lock.json,只下载固定版本的官方 win64 ZIP。
  2. SHA256 校验;校验不符即中止,解压时检查路径穿越。
  3. PyInstaller 原生构建 GUI 与 CLI onedir。
  4. 放入 Chrome、使用说明、版本、许可及源码散列清单。
  5. 运行打包 GUI 离线冒烟与 CLI 帮助检查;失败不发布。
  6. 使用 Inno 和仓库内简体中文语言文件生成单文件安装程序。
  7. 输出 release\SHA256SUMS.txt

最终产物:

dist\DouyinAccounts\                 # 可直接运行的完整开发/排错目录
release\DouyinAccounts-0.1.0-Windows-x64-Setup.exe
release\SHA256SUMS.txt

没有跨平台把 Linux 二进制复制成 Windows 程序。最终包不需要 Playwright 再下载 Chromium,也不包含项目现有登录目录。

5. 真 Chrome 离线矩阵

构建得到浏览器后:

.\.venv\Scripts\python.exe src\test_browser_matrix.py `
  --chrome "$PWD\dist\DouyinAccounts\browser\chrome-win64\chrome.exe" `
  --report "$PWD\browser-matrix.json"

矩阵只在临时目录启动测试 Chrome,所有目标站点请求由本地假数据响应,不接入现有账号。用于核验多浏览器隔离、错误身份拒绝、重连、持久化、刷新和删除安全。

6. 调整浏览器版本

修改锁文件必须同时更新官方 URL 和 SHA256,再完整重测。构建脚本不会自动追随最新版。缓存 ZIP 在 .build-cache\chrome-win64.zip;更换版本后移除该单个旧 ZIP 再构建,避免旧缓存校验失败。

更新浏览器内核不等于移动 Cookie。界面更换可执行路径会使用独立登录目录,需自己重新登录。

独立 CLI

普通使用者不需要 CLI;开发调试时,所有网络调用均显式传账号上下文:

# 源码方式;只读获取当前账号
.\.venv\Scripts\python.exe src\get_current_user.py `
  --cdp-url http://127.0.0.1:9222 --expected-uid <你的数字UID> --output current-user.json

# 打包方式:仅查看帮助
.\dist\DouyinAccounts\cli\DouyinCLI.exe --help
.\dist\DouyinAccounts\cli\DouyinCLI.exe notifications --help
.\dist\DouyinAccounts\cli\DouyinCLI.exe im send --help

另可使用 DOUYIN_CDP_URLDOUYIN_EXPECTED_UID 环境变量,但不得写入发布包。多个匹配标签会拒绝执行,可用 --page-url 精确选择。CLI 不使用全局 browser-harness daemon。

follow 默认是写操作,--check-only 才是只读;im send 默认预览、--confirm 才发送;mark-read 默认探查、--apply 才提交。不要让 CLI 与桌面队列同时对同一账号执行写动作。

可追溯证据位置

本次 Windows 构建工作目录 C:\Users\rogee\douyin-pc-build-20260906 保存:

  • tests-final.log:最终 22 项测试与桥接检查;
  • browser-matrix-final.json:最终 Chrome 矩阵;
  • build-final.log:打包与 Inno 编译日志;
  • .build-cache\smoke-packaged.json:打包运行时冒烟;
  • smoke-isolated-path.json:中文/空格路径与限制 PATH 冒烟;
  • dist\DouyinAccounts\build-manifest.json:依赖、浏览器与源码散列;
  • release\SHA256SUMS.txt:最终安装程序校验值。

smoke-no-external-runtimes.json 的应用启动成功,但自动选择仍是系统 Chrome;对应隐藏系统 Chrome 的测试断言失败,不作为干净系统通过证据。已知限制、线上只读测试和未完成的人工验收详见 2026-09-06-12-33-development-testing-delivery.md