Eliminated the installer "cannot be closed" error, implemented Telegram-style silent auto-update with race-free PID-wait launcher, unified both updater paths, and added one-command R2 release pipeline.
New Features
- • Telegram-style silent auto-update: updates download in the background and install automatically on the next app quit with relaunch
- • Race-free PID-wait launcher that waits for the app to exit before running the installer
- • One-command release pipeline with automated Cloudflare R2 upload and post-upload integrity verification
Improvements
- • Unified both updater paths (electron-updater and custom fallback) through a single install-on-quit lifecycle
- • Added update-pending.json persistence with explicit lifecycle states: pending-install, installing, verified, failed, deferred
- • Newly launched app verifies its version before clearing pending update state
- • Deferred update retry if the app process does not exit within 60 seconds
- • Release mode (PB_RELEASE=true) makes R2 upload mandatory with version + SHA512 + cache freshness verification
Bug Fixes
- • Eliminated the "Plumbing booster cannot be closed" installer error by hardening the NSIS kill logic with $SYSDIR\taskkill.exe and nsProcess::FindProcess verification