From 07357c4766212f3ea8b58a1441f021b52a1c602d Mon Sep 17 00:00:00 2001 From: QiuSW <105186638@qq.com> Date: Thu, 9 Jul 2026 01:20:36 +0800 Subject: [PATCH] docs: add windows packaging verification --- README.md | 3 + docs/03-tech-stack.md | 8 +++ docs/06-tasks.md | 2 +- docs/current-state.md | 12 +++- docs/windows-packaging.md | 125 ++++++++++++++++++++++++++++++++++++++ progress.md | 16 +++++ 6 files changed, 164 insertions(+), 2 deletions(-) create mode 100644 docs/windows-packaging.md diff --git a/README.md b/README.md index 41fb00d..9201690 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,8 @@ Windows 下也可以直接运行: `dev.bat` 会从 `9245` 开始选择一个空闲 Vite 端口,避免已有 dev server 占用端口时无法打开 GUI。 开发启动使用快速前端 dev 构建以尽快打开桌面窗口;提交前仍以 `npm run build` 做完整 TypeScript 检查和生产构建。 +Windows 打包验证见 [`docs/windows-packaging.md`](docs/windows-packaging.md)。当前默认打包路径是 NSIS,要求本机安装 `makensis`。 + ## Wails Bindings 修改 Go 服务的公开方法、参数模型、返回模型,或在 `main.go` 注册新服务后,需要从项目根目录重新生成前端 bindings: @@ -106,6 +108,7 @@ wails3 generate bindings -clean=true - [`docs/00-ai-start-here.md`](docs/00-ai-start-here.md):固定开工流程。 - [`docs/current-state.md`](docs/current-state.md):当前真实状态和命令。 - [`docs/06-tasks.md`](docs/06-tasks.md):任务看板。 +- [`docs/windows-packaging.md`](docs/windows-packaging.md):Windows 打包验证流程。 - [`progress.md`](progress.md):执行流水和验证证据。 统一验证入口: diff --git a/docs/03-tech-stack.md b/docs/03-tech-stack.md index 5d4db47..213c499 100644 --- a/docs/03-tech-stack.md +++ b/docs/03-tech-stack.md @@ -107,6 +107,14 @@ Wails 构建: wails3 build ``` +Windows 打包: + +```powershell +wails3 package +``` + +打包前置条件、输出目录和常见失败处理见 [`windows-packaging.md`](windows-packaging.md)。 + Windows 快捷脚本: ```powershell diff --git a/docs/06-tasks.md b/docs/06-tasks.md index 68fdbae..071a08c 100644 --- a/docs/06-tasks.md +++ b/docs/06-tasks.md @@ -48,7 +48,7 @@ | --- | --- | --- | --- | --- | | T-030 | 建立常用组件示例页 | T-012 | 输入框、多选框、下拉框、多行文本、表格、筛选、分页、状态标签有可运行示例 | DONE | | T-031 | 文档化 Wails bindings 生成流程 | T-012 | README 或技术栈文档说明 `wails3 generate bindings` 的使用、失败处理和版本要求 | DONE | -| T-032 | 补充 Windows 打包验证文档 | T-031 | `wails3 package` 前置条件、输出目录和常见失败处理写入 README 或 docs | TODO | +| T-032 | 补充 Windows 打包验证文档 | T-031 | `wails3 package` 前置条件、输出目录和常见失败处理写入 README 或 docs | DONE | | T-033 | 完成一次模板 smoke 清单 | T-023 | 登录、设置、业务样例、日志、统计、组件示例、托盘、热键都按清单验证并记录结果 | TODO | | T-034 | 添加 Windows Wails 快捷脚本 | T-001 | `dev.bat` 一行切到项目根目录、补 Go bin PATH、自动选择空闲端口并运行 `wails3 dev`;`build.bat` 一行切到项目根目录、补 Go bin PATH 并运行 `wails3 build`;README、技术栈、当前状态和执行流水已同步 | DONE | diff --git a/docs/current-state.md b/docs/current-state.md index c9df16d..0e3e900 100644 --- a/docs/current-state.md +++ b/docs/current-state.md @@ -24,6 +24,7 @@ - 前端框架:Vue 3、Vite、TypeScript、Tailwind CSS、Ant Design Vue - 当前 Wails 前端 bindings:由 `wails3 build` / `wails3 generate bindings` 生成的 `.js` 文件。 - 已文档化 Wails bindings 生成流程:README 和技术栈文档包含固定版本、生成命令、失败处理和提交要求。 +- 已文档化 Windows 打包验证流程:`docs/windows-packaging.md` 包含 `wails3 package` 前置条件、NSIS 输出目录、验证清单和常见失败处理。 - 本地数据库:SQLite,用户配置目录下 `cmbone/cmbone.db` - 当前本地演示账号:`admin` / `admin123`,密码由后端初始化为 salt + SHA-256 hash,不写死在前端。 - 当前主窗口路由:`/#/` 重定向到 `/#/dashboard`。 @@ -85,6 +86,8 @@ wails3 build - OCR 和热键依赖平台实现,跨平台修改需要分别验证。 - 当前前端以构建检查为主,暂未引入专门的前端单元测试。 - bindings 生成依赖本机安装的 `wails3`。 +- Windows 默认打包路径依赖 NSIS `makensis`;当前本机 PATH 未检测到 `makensis`。 +- 当前项目未配置 `wails.json`,MSIX 暂不作为可用打包路径。 - `npm install` 当前报告 3 个 moderate audit findings,后续如做依赖治理应单独开任务。 - 前端构建当前有 Browserslist 数据过期和 chunk 大小警告,不阻塞生产构建。 - Windows 快捷脚本依赖 `go env GOPATH` 下的 `bin\wails3.exe`,如果未安装 Wails CLI,先按 README 安装固定版本。 @@ -219,9 +222,16 @@ wails3 build - 明确固定版本:Go `1.23.0`、Wails CLI `v3.0.0-alpha.9`、`@wailsio/runtime 3.0.0-alpha.66`。 - 明确生成命令、生成时机、常见失败处理、提交要求和验证命令。 +同日完成 Windows 打包验证文档: + +- 新增 `docs/windows-packaging.md`。 +- README 和技术栈文档已链接该文档。 +- 文档记录 `wails3 package` 前置条件、默认 NSIS 路径、输出目录、安装包验证清单和常见失败处理。 +- 已确认本机 `wails3 package -help` 可用,但 PATH 中未检测到 `makensis`,因此未强跑 NSIS 打包。 + ## 下一步 -从 [`06-tasks.md`](06-tasks.md) 领取第一个 `TODO` 任务。目前建议先做 `T-032`:补充 Windows 打包验证文档。 +从 [`06-tasks.md`](06-tasks.md) 领取第一个 `TODO` 任务。目前建议先做 `T-033`:完成一次模板 smoke 清单。 ## 当前 blocker diff --git a/docs/windows-packaging.md b/docs/windows-packaging.md new file mode 100644 index 0000000..2c771b4 --- /dev/null +++ b/docs/windows-packaging.md @@ -0,0 +1,125 @@ +# Windows 打包验证 + +本文记录当前项目在 Windows 10+ 上执行 `wails3 package` 前需要确认的条件、默认输出位置和常见失败处理。 + +## 当前范围 + +- 默认打包格式:NSIS 安装包。 +- 当前 Wails CLI:`wails3 v3.0.0-alpha.9`。 +- 当前项目没有 `wails.json`,MSIX 任务暂不作为可用路径。 +- Windows 打包配置位于 `build/windows/`。 + +## 前置条件 + +1. Go、Node.js、npm 可用。 +2. Wails CLI 已安装固定版本: + + ```powershell + go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.9 + $env:Path += ";$(go env GOPATH)\bin" + wails3 package -help + ``` + +3. 前端依赖已安装: + + ```powershell + cd frontend + npm install + cd .. + ``` + +4. 默认 NSIS 打包需要 `makensis` 在 PATH 中: + + ```powershell + Get-Command makensis + ``` + + 如果找不到 `makensis`,先安装 NSIS,并把 NSIS 安装目录加入 PATH。 + +5. Windows 打包资源存在: + + ```text + build/windows/icon.ico + build/windows/info.json + build/windows/wails.exe.manifest + build/windows/nsis/project.nsi.tmpl + ``` + +## 打包前验证 + +打包前先确认普通构建通过: + +```powershell +go test ./... +cd frontend +npm run build +cd .. +go build -o bin\cmbone.exe . +cmd /c build.bat +``` + +`build.bat` 使用 `wails3 build`,会生成 `bin\cmbone.exe`。当前 Wails v3 alpha CLI 会提示 `wails3 build` 是 `wails3 task` 的 alias,这是非阻塞提示。 + +## 执行打包 + +从项目根目录执行: + +```powershell +$env:Path += ";$(go env GOPATH)\bin" +wails3 package +``` + +当前 Taskfile 的 Windows package 会走 NSIS: + +1. 先执行 production build。 +2. 生成 WebView2 bootstrapper。 +3. 调用 `makensis` 生成安装包。 + +Production build 使用的关键参数来自 `build/windows/Taskfile.yml`: + +```text +-tags production -trimpath -buildvcs=false -ldflags="-w -s -H windowsgui" +``` + +## 输出目录 + +普通构建输出: + +```text +bin/cmbone.exe +``` + +默认 NSIS 安装包输出: + +```text +bin/cmbone-amd64-installer.exe +``` + +该路径来自 `build/windows/nsis/project.nsi.tmpl` 的 `OutFile` 配置。 + +MSIX 不是当前默认路径。`build/windows/Taskfile.yml` 中的 MSIX task 依赖 `wails.json`,但当前项目根目录没有该文件;需要后续单独配置后再启用。 + +## 安装包验证 + +生成安装包后至少检查: + +1. `bin/cmbone-amd64-installer.exe` 存在且文件大小不为 0。 +2. 在 Windows 10+ 测试机或虚拟机运行安装包。 +3. 安装完成后桌面和开始菜单快捷方式可启动应用。 +4. 主窗口可见,默认进入 `/#/dashboard`。 +5. 本地演示账号 `admin` / `admin123` 可登录。 +6. 能打开 `/#/image-optimizer`、`/#/settings`、`/#/components`。 +7. 卸载入口可用,卸载后安装目录被移除。 + +## 常见失败 + +| 现象 | 处理 | +| --- | --- | +| `wails3` 找不到 | 安装固定版本,并把 `$(go env GOPATH)\bin` 加入当前 PowerShell PATH | +| `makensis` 找不到 | 安装 NSIS,把 NSIS 目录加入 PATH 后重新打开终端 | +| WebView2 bootstrapper 生成失败 | 检查网络、代理和杀毒软件拦截;必要时单独执行 `wails3 generate webview2bootstrapper -dir build/windows/nsis` | +| 前端构建失败 | 先运行 `cd frontend && npm install && npm run build`,修复 TypeScript 或依赖问题 | +| bindings 失效 | 运行 `wails3 generate bindings -clean=true`,再运行 `npm run build` | +| Go 编译失败 | 运行 `go test ./...` 和 `go build -o bin\cmbone.exe .` 定位服务或模型错误 | +| 图标、manifest 或版本信息错误 | 检查 `build/windows/icon.ico`、`build/windows/wails.exe.manifest`、`build/windows/info.json` | +| MSIX 打包失败 | 当前项目未配置 `wails.json`,不要把 MSIX 作为验收路径 | diff --git a/progress.md b/progress.md index 5e2c678..e0d7c38 100644 --- a/progress.md +++ b/progress.md @@ -353,3 +353,19 @@ - `git diff --check` 通过。 - 非阻塞警告: - 文档任务未改运行代码,未重复执行构建。 + +### 补充 Windows 打包验证文档 + +- 任务:完成 `T-032`,`wails3 package` 前置条件、输出目录和常见失败处理写入 README 或 docs。 +- 结果: + - 新增 `docs/windows-packaging.md`。 + - README 和 `docs/03-tech-stack.md` 已链接 Windows 打包验证文档。 + - 文档明确默认 NSIS 打包路径、`makensis` 前置条件、`bin/cmbone-amd64-installer.exe` 输出目录、安装包验证清单和常见失败处理。 + - 文档明确当前项目没有 `wails.json`,MSIX 暂不作为验收路径。 +- 验证: + - `$env:Path += ";$(go env GOPATH)\bin"; wails3 package -help` 通过。 + - `Get-Command makensis` 未找到命令,已写入文档风险。 + - `git diff --check` 通过。 +- 非阻塞警告: + - 文档任务未改运行代码。 + - 本机缺少 NSIS `makensis`,未强跑 `wails3 package`。