Skip to content

Commit dff7536

Browse files
committed
fix: retry sparkle framework download
1 parent e40a450 commit dff7536

2 files changed

Lines changed: 23 additions & 3 deletions

File tree

docs-linhay/memory/2026-04-27.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
- Sparkle 接入推进:已建立 `20260427-macos-sparkle-updater` space,补齐架构文档,并新增 Sparkle plist 注入、官方 xcframework 下载、app bundle framework 嵌入脚本;release workflow 现可通过 `SPARKLE_ENABLE=1` 启用实验链路,但运行时 bridge 仍未真正接管更新入口。
9191
- Sparkle 接入推进(二):`internal/sparkle` 已改为动态加载 `Sparkle.framework` 的 darwin bridge,`wailsapp` 与设置页已能识别原生更新 UI 模式;当前 macOS 更新入口可切到 Sparkle 实验路径,但还缺 appcast 与真实升级回归。
9292
- Sparkle 接入推进(三):新增 `scripts/generate-sparkle-appcast.sh` 与对应测试,release workflow 现在可在 `SPARKLE_ENABLE=1` 时用 Sparkle 官方 `generate_appcast` 基于 notarized `.dmg` 生成签名后的 `appcast.xml`,并推送到 `sparkle-appcast` 分支供 `raw.githubusercontent.com` 托管稳定 feed。
93+
- Sparkle 正式 release 首次回归(`v0.1.7`)失败点已定位:仅 `macOS amd64``Embed Sparkle framework` 阶段拿到损坏的 Sparkle zip(约 55 KB HTML/错误页),不是 framework 集成本身失败;已把 `scripts/prepare-sparkle-framework.sh` 改成 `curl --fail --retry --retry-all-errors` 并在下载后执行 `unzip -tq` 校验,不合法则重试。
9394

9495
## Wails Window Drag Region
9596
- 当前窗口拖不动的根因已确认:`main.go` 启用了 `mac.TitleBarHiddenInset()`,但前端此前没有任何 `--wails-draggable` 区域,导致 macOS 将整个壳层视为普通 Web 内容。

scripts/prepare-sparkle-framework.sh

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,28 @@ SPARKLE_XCFRAMEWORK_DIR="${SPARKLE_WORK_DIR}/Sparkle.xcframework"
1313

1414
mkdir -p "${SPARKLE_WORK_DIR}"
1515

16-
if [[ ! -f "${SPARKLE_ZIP_PATH}" ]]; then
17-
echo "Downloading Sparkle ${SPARKLE_VERSION} from ${SPARKLE_DOWNLOAD_URL}" >&2
18-
curl -L -o "${SPARKLE_ZIP_PATH}" "${SPARKLE_DOWNLOAD_URL}"
16+
download_sparkle_zip() {
17+
local attempt
18+
local max_attempts=5
19+
20+
for attempt in $(seq 1 "${max_attempts}"); do
21+
rm -f "${SPARKLE_ZIP_PATH}"
22+
echo "Downloading Sparkle ${SPARKLE_VERSION} from ${SPARKLE_DOWNLOAD_URL} (attempt ${attempt}/${max_attempts})" >&2
23+
curl --fail --location --retry 3 --retry-all-errors --retry-delay 2 -o "${SPARKLE_ZIP_PATH}" "${SPARKLE_DOWNLOAD_URL}"
24+
25+
if unzip -tq "${SPARKLE_ZIP_PATH}" >/dev/null 2>&1; then
26+
return 0
27+
fi
28+
29+
echo "Downloaded Sparkle archive is not a valid zip, retrying..." >&2
30+
done
31+
32+
echo "Failed to download a valid Sparkle archive after ${max_attempts} attempts." >&2
33+
exit 1
34+
}
35+
36+
if [[ ! -f "${SPARKLE_ZIP_PATH}" ]] || ! unzip -tq "${SPARKLE_ZIP_PATH}" >/dev/null 2>&1; then
37+
download_sparkle_zip
1938
fi
2039

2140
if [[ ! -d "${SPARKLE_XCFRAMEWORK_DIR}" ]]; then

0 commit comments

Comments
 (0)