Files
QiuSWandClaude Opus 5 2e8a01460d fix: 状态筛选默认改为全部;修正 build.bat 产生垃圾目录
1. 商品列表的「状态」筛选默认值由 NORMAL 改为空(全部)。
   按负责人要求,默认不预设商品状态过滤。

2. build.bat 结尾用 explorer "%CD%\build\bin" 打开产物目录,
   在某些环境下 %CD% 未展开,会在仓库里建出一个名为 %SystemDrive%
   的垃圾目录(已实际出现并删除)。改为 start "" explorer "%~dp0build\bin",
   并加 if exist 保护。

   同时修复该文件在多次编辑中被引入的字节级损坏:反斜杠被重复转义成
   \,且部分行尾退化为 LF。已统一还原为单反斜杠 + CRLF,
   实测前三项检查可正常执行。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LbdtsD3ohhSMy3KPoCgARq
2026-09-02 22:44:19 +08:00

210 lines
5.9 KiB
Batchfile
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@echo off
setlocal
rem ============================================================
rem [编码提醒] 本文件必须保存为 GBK / ANSI 编码,CRLF 行尾。
rem 存成 UTF-8 会让 cmd 解析中文出错,脚本直接跑不起来。
rem 用 VS Code 编辑时,右下角编码要选 GB2312/GBK 再保存。
rem ============================================================
rem cmsp 打包脚本
rem
rem 双击本文件,把程序打包成一个 exe,可以直接发给同事使用。
rem 产物在 build\bin\cmsp.exe。
rem
rem 只是想改代码看效果,请双击 run_dev.bat,不要用这个。
rem 打包比开发模式慢很多。
rem
rem 遇到报错先看提示里的「怎么修」,照着做通常就好了。
rem 实在解决不了,把整个黑窗口截图发给维护者。
rem ============================================================
cd /d "%~dp0"
echo.
echo ============================================================
echo cmsp 打包
echo ============================================================
echo.
rem ---------- 检查 1:Go ----------
echo [1/6] 检查 Go ...
where go >nul 2>nul
if errorlevel 1 (
echo.
echo [X] 没有找到 go 命令。
echo.
echo 怎么修:
echo 1. 到 https://go.dev/dl/ 下载 Go 并安装
echo 2. 装完关掉这个窗口,重新双击本脚本
echo ^(装完必须重开窗口,否则读不到新的 PATH^)
echo.
goto :fail
)
for /f "tokens=3" %%v in ('go version') do set GOVER=%%v
echo OK %GOVER%
rem ---------- 检查 2:Node ----------
echo [2/6] 检查 Node.js ...
where node >nul 2>nul
if errorlevel 1 (
echo.
echo [X] 没有找到 node 命令。
echo.
echo 怎么修:到 https://nodejs.org/ 下载 LTS 版本安装,
echo 装完关掉窗口重新双击本脚本。
echo.
goto :fail
)
for /f %%v in ('node --version') do set NODEVER=%%v
echo OK %NODEVER%
rem ---------- 检查 3:Wails CLI ----------
echo [3/6] 检查 Wails 命令行工具 ...
set "WAILS="
where wails >nul 2>nul
if not errorlevel 1 set "WAILS=wails"
rem where 找不到时,去 Go 的默认安装目录再找一次。
rem 很多人装完 Go 工具没把 GOPATH 下的 bin 加进 PATH,这里兜住。
if not defined WAILS (
for /f "delims=" %%p in ('go env GOPATH') do (
if exist "%%p\bin\wails.exe" set "WAILS=%%p\bin\wails.exe"
)
)
if not defined WAILS (
echo.
echo [X] 没有找到 wails 命令。
echo.
echo 怎么修:在这个窗口里执行下面这条命令,装完再重新双击本脚本
echo.
echo go install github.com/wailsapp/wails/v2/cmd/wails@latest
echo.
echo 注意要装 v2,不要装 v3。本项目用的是 Wails v2 稳定版。
echo.
goto :fail
)
echo OK 找到 wails
rem ---------- 检查 4:跑单元测试 ----------
rem 打包前先跑测试。测试不过就别打包,免得把坏版本发给同事。
echo [4/6] 运行单元测试 ...
go test ./...
if not errorlevel 1 (
echo OK 测试全部通过
goto :tests_done
)
echo.
echo [X] 单元测试没通过。
echo.
echo 怎么修:
echo 往上翻找 FAIL 开头的行,那里写了哪个测试失败、
echo 期望什么、实际是什么。先把代码改对再打包。
echo.
if /i not "%~1"=="skiptest" (
echo 打包已停止,不把没通过测试的版本发出去。
echo.
echo 确实要强行打包时执行:build.bat skiptest
echo.
goto :fail
)
echo [!] 已按 skiptest 参数忽略测试失败,继续打包。
echo [!] 这个版本不要发给同事,先把测试修好。
echo.
:tests_done
rem ---------- 检查 5:前端依赖 ----------
echo [5/6] 检查前端依赖 ...
if not exist "frontend\node_modules" (
echo node_modules 不存在,开始安装,第一次要几分钟 ...
pushd frontend
call npm install
if errorlevel 1 (
popd
echo.
echo [X] npm install 失败。
echo.
echo 怎么修:
echo 1. 确认能上网
echo 2. 公司网络受限时换镜像源:
echo npm config set registry https://registry.npmmirror.com
echo 3. 还不行就删掉 frontend\node_modules 和
echo frontend\package-lock.json 再跑一次
echo.
goto :fail
)
popd
echo 依赖安装完成
) else (
echo OK 依赖已安装
)
rem ---------- 打包 ----------
echo [6/6] 开始打包,大约需要半分钟 ...
echo.
rem -clean 会先清掉上次的产物,避免新旧文件混在一起。
"%WAILS%" build -clean
if errorlevel 1 (
echo.
echo [X] 打包失败。
echo.
echo 常见原因:
echo - Go 代码有编译错误:往上翻找报错行
echo - 上一个 cmsp.exe 还在运行,文件被占用:
echo 关掉正在运行的 cmsp 窗口再试
echo - 依赖没下全:执行 go mod download 后重试
echo.
goto :fail
)
if not exist "build\bin\cmsp.exe" (
echo.
echo [X] 打包命令没报错,但没找到 build\bin\cmsp.exe
echo 请把这个窗口截图发给维护者。
echo.
goto :fail
)
echo.
echo ============================================================
echo 打包成功
echo ============================================================
echo.
echo 产物:%CD%\build\bin\cmsp.exe
for %%f in ("build\bin\cmsp.exe") do echo 大小:%%~zf 字节
echo.
echo 发给同事时的注意事项:
echo - 只发 cmsp.exe 就够了,它已经把界面打包进去了
echo - [必须] 不要把 config.yaml 一起发出去,里面有账号密码
echo - [必须] 不要把 cmsp.db 一起发出去,里面有登录状态
echo - 对方第一次打开后,到「参数设置」页填自己的账号
echo.
echo 对方电脑需要装:
echo - Microsoft Edge WebView2 运行时
echo ^(Win10 一般自带;没有的话程序会提示去装^)
echo - Google Chrome ^(用来登录淘宝^)
echo - ffprobe ^(用来校验下载的视频是否完整^)
echo.
rem 打开产物所在目录,省得手动找。
rem 用 start 而不是直接 explorer:某些环境下 explorer 拿到未展开的
rem 环境变量,会在当前目录建出 %SystemDrive% 这种垃圾文件夹。
if exist "%~dp0build\bin" start "" explorer "%~dp0build\bin"
goto :done
:fail
echo.
echo ============================================================
echo 打包失败。上面写了怎么修,照着做通常就好。
echo 解决不了就把这个窗口截图发给维护者。
echo ============================================================
echo.
pause
exit /b 1
:done
pause
exit /b 0