Make local Windows release builds work without GitHub.

- Prefer Python 3.12 (py -3.12 / Python312) even when another version is
  first on PATH, matching the CI pin.
- Skip npm ci when node_modules already matches package-lock.json: npm ci
  wipes node_modules first and a running Vite dev server leaves it
  half-deleted.
- pip --no-warn-script-location: its PATH check realpath()s every entry
  and aborts on a broken reparse point.
- README: local release / Forgejo / offline steps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
oliver 2026-10-13 21:38:31 +08:00
parent 1b2b8cef2b
commit a82e546918
2 changed files with 38 additions and 5 deletions

View file

@ -50,6 +50,14 @@ ISCC.exe packaging\installer\netx.iss
Override version in the `.iss` or edit `#define MyAppVersion`.
Optional local zip only: `build_release.ps1 -CreateZip` (not for release upload).
### Local release without GitHub
GitHub Actions (`.github/workflows/release-windows.yml`, on `v*` tags) runs the same scripts. To release without it:
1. Install Python **3.12** (same as CI; side by side with other versions is fine, PATH not needed — the build picks it via `py -3.12` or `%LOCALAPPDATA%\Programs\Python\Python312`) and Inno Setup 6.
2. `powershell -ExecutionPolicy Bypass -File .\packaging\publish_release.ps1 -Version x.y.z -SkipGitHub` → `packaging\release\NetX-Setup-x.y.z.exe` + `.sha256`. PostgreSQL and WinSW come from `packaging\cache` (offline once cached). `npm ci` is skipped when `web\node_modules` already matches `package-lock.json`, so a running Vite dev server does not break the build.
3. Publish to Forgejo with `publish_forgejo_release.ps1`, or copy the Setup to offline machines; clients can update from Forgejo only via `NETX_UPDATE_SOURCES=forgejo`.
## End-user install
### Setup.exe