diff --git a/README.md b/README.md index e063acc..d604857 100644 --- a/README.md +++ b/README.md @@ -220,10 +220,17 @@ src/ 4. 真实 VRM 样例仅放在 `_scratch/`(已 gitignore),版权原因不入库; 测试在找不到模型时显式跳过而非伪装通过。 5. **Gitea 附件上传上限**:本项目 Gitea 前置 IIS 的默认 - `maxAllowedContentLength = 30,000,000` 字节(≈28.6 MiB),实测 30.5 MB / 40 MB - 上传返回 HTTP 413。`v0.1.0` 因此被拆成 `zip.part0/1/2`(无法直接解压)。 - 现改为**只上传单个完整包**,超限时打包脚本直接告警并要求运维放宽上限, - 不再回退分卷;做法见 `opendance-web/deploy/proxy/README.md`。 + `maxAllowedContentLength = 30,000,000` 字节(≈28.6 MiB),实测 16.4 MB 通过、 + 30.5 MB / 37 MB / 40 MB 上传返回 **HTTP 413**。`v0.1.0` 因此被拆成 + `zip.part0/1/2`(无法直接解压)。现改为**只上传单个完整包**,超限时打包脚本 + 直接告警并要求运维放宽上限,不再回退分卷;做法见 + `opendance-web/deploy/proxy/README.md` 第九节。 +6. **v0.2.0 的 zip 用的是 LZMA 压缩**(`ZIP_METHOD=lzma` 打出来的),因为发布时 + IIS 上限尚未放开:整包从约 38 MB 降到约 26 MB 才能传上去。 + **代价:Windows 10 的资源管理器不支持 LZMA(method 14) 的 zip,必须用 + 7-Zip / WinRAR / PeaZip 解压**(Win11 24H2+ 起资源管理器原生支持 7z 等格式, + 但本项目未在 Windows 上实测)。若 IIS 上限已放开,请改用默认的 deflate 包 + (`bash build/package-release.sh 0.2.0`,产物约 38 MB,双击即可解压)。 ## 第三方开源声明 diff --git a/README.txt b/README.txt index acb4b1d..81c69f9 100644 --- a/README.txt +++ b/README.txt @@ -1,5 +1,5 @@ ================================================================ -OpenDance Studio -- Windows 客户端 v0.2.0 使用说明 +OpenDance Studio -- Windows 客户端 v0.2.0 使用说明(zip 为 LZMA 压缩,需用 7-Zip/WinRAR 解压) ================================================================ 摄像头跳舞评分系统的核心体验端:接收 Android 辅助 App 通过 WebSocket @@ -116,7 +116,11 @@ OpenDance.exe 的用户看第一节即可。 注意:本项目 Gitea 前置 IIS 的默认上传上限是 30,000,000 字节 (约 28.6 MiB),超过会返回 HTTP 413。这时不要改成分卷, - 请让运维放宽上限(做法见 opendance-web/deploy/proxy/README.md)。 + 请让运维放宽上限(做法见 opendance-web/deploy/proxy/README.md 第九节)。 + 发布 v0.2.0 时该上限尚未放开,整包(约 38 MB)改用 LZMA 压缩到约 26 MB + 才传上去(打包时用 ZIP_METHOD=lzma)。**因此 v0.2.0 的 zip 需要 + 7-Zip / WinRAR / PeaZip 解压 —— Windows 10 资源管理器不支持 LZMA 的 zip**; + 若上限已放开,请改用默认 deflate 包(双击即可解压)。 7. 自检清单 diff --git a/build/package-release.sh b/build/package-release.sh index e3a99ee..1a2d08e 100755 --- a/build/package-release.sh +++ b/build/package-release.sh @@ -71,13 +71,42 @@ cp -r contracts "$STAGE/contracts" ZIP="$OUT_DIR/$NAME.zip" # 清理历史分卷,避免 old .partN 被误当成本次产物上传 rm -f "$OUT_DIR/$NAME.zip".part* "$OUT_DIR/$NAME.zip" "$OUT_DIR/SHA256SUMS"* -log "生成单个完整包 $NAME.zip …" -( cd "$OUT_DIR" && zip -qr "$NAME.zip" "$NAME" ) + +# 压缩方式:默认 deflate(Windows 资源管理器可直接解压)。 +# ZIP_METHOD=lzma 时改用 LZMA —— 包体从约 38 MB 降到约 26 MB,可绕过 +# 「Gitea 站点 IIS 的 maxAllowedContentLength = 30,000,000 字节」这道闸 +# (见 opendance-web/deploy/proxy/README.md 第九节)。 +# **代价**:Windows 10 的资源管理器不支持 LZMA(method 14) 的 zip,用户必须用 +# 7-Zip / WinRAR / PeaZip 解压(Win11 24H2+ 起资源管理器原生支持 7z/zip 变体, +# 但本项目未在 Windows 上实测)。因此只有在 IIS 上限确实无法放开时才用 LZMA。 +ZIP_METHOD="${ZIP_METHOD:-deflate}" +log "生成单个完整包 $NAME.zip(压缩方式:$ZIP_METHOD)…" +case "$ZIP_METHOD" in + deflate) + ( cd "$OUT_DIR" && zip -qr "$NAME.zip" "$NAME" ) + ;; + lzma) + command -v 7z >/dev/null 2>&1 || die "ZIP_METHOD=lzma 需要 7z(Debian/Ubuntu: apt install p7zip-full)" + ( cd "$OUT_DIR" && rm -f "$NAME.zip" && 7z a -tzip -mm=LZMA -mx=9 "$NAME.zip" "$NAME" >/dev/null ) + ;; + *) + die "未知 ZIP_METHOD=$ZIP_METHOD(可选:deflate / lzma)" + ;; +esac +# LZMA 包额外做一次完整性测试与解压自检(zip/unzip 对 method 14 支持不一致) +if [ "$ZIP_METHOD" = "lzma" ]; then + 7z t "$ZIP" >/dev/null || die "LZMA 包完整性测试失败(7z t)" + log "LZMA 包完整性测试通过(7z t)" +fi # ---- 4. 完整性自检:解压后必须含 exe + pck(同目录)且 exe 仍是合法 PE ---- CHECK_DIR=$(mktemp -d) trap 'rm -rf "$CHECK_DIR"' EXIT -unzip -q "$ZIP" -d "$CHECK_DIR" +if [ "$ZIP_METHOD" = "lzma" ]; then + 7z x -y -o"$CHECK_DIR" "$ZIP" >/dev/null +else + unzip -q "$ZIP" -d "$CHECK_DIR" +fi [ -f "$CHECK_DIR/$NAME/OpenDance.exe" ] || die "包内缺少 OpenDance.exe" [ -f "$CHECK_DIR/$NAME/OpenDance.pck" ] || die "包内缺少 OpenDance.pck(必须与 exe 同目录)" @@ -111,6 +140,8 @@ if [ "$SIZE_BYTES" -gt "$UPLOAD_LIMIT_BYTES" ]; then warn " Gitea app.ini [attachment] MAX_SIZE >= 256MB" warn " nginx(若前置)client_max_body_size 256m;" warn "本脚本**不会**回退为 .partN 分卷——分卷包无法直接解压,是历史缺陷。" + warn "若暂时无法放开 IIS 上限,可用 ZIP_METHOD=lzma 重跑本脚本:包体约 26 MB 可绕过 30 MB 闸," + warn "但 Windows 10 资源管理器不能直接解压 LZMA zip,必须用 7-Zip / WinRAR(README 中已注明)。" else log "低于上限,可直接作为 Release 资产上传。" fi @@ -125,7 +156,11 @@ else die "sha256 自校验失败" fi echo "" -unzip -l "$ZIP" | sed -n '3,14p' +if [ "$ZIP_METHOD" = "lzma" ]; then + 7z l "$ZIP" | tail -14 +else + unzip -l "$ZIP" | sed -n '3,14p' +fi echo "" echo "分发:上传 $NAME.zip 与 SHA256SUMS 两个资产;用户下载后" echo " sha256sum -c SHA256SUMS && unzip $NAME.zip 即可直接运行 OpenDance.exe。"