Windows half of the cross-platform packaging split (Linux shipped in #65). Split out from #66.
Goal
The NSIS installer offers component selection — Client / Server / Both (default Both):
- Client — the GUI +
chess-db.exe on PATH.
- Server — a Windows Service (
LPDOServer) running chess-db serve, data under C:\ProgramData\LPDO (mirrors the Linux /var/lib/lpdo system model).
Approach (planned)
LPDO_DATA_DIR env override in chess-db (required — Windows dirs::home_dir() ignores $HOME, so the Linux redirect can't work). Linux-testable, lands first.
- WinSW service wrapper (
chess-db serve isn't SCM-aware; bare sc create → error 1053; the windows-service crate is Windows-only Rust). LocalSystem for v1.
- Custom Tauri NSIS template + installerHooks (
installMode: perMachine): Components page; PREINSTALL stops the service (exe-lock/upgrade), POSTINSTALL adds PATH + creates C:\ProgramData\LPDO + registers/starts the service; PREUNINSTALL stops+removes the service and PATH but keeps the data (mirrors Linux postrm).
- CI: fetch WinSW on the windows-2022 leg;
tauri-action --bundles nsis picks up the template/hooks. Dry-run via workflow_dispatch + throwaway tag.
Validation
CI compiles the NSIS installer; real install/service/ACL/PATH behaviour is verified by a manual Windows test (no Linux dev access to Windows).
Related
#60/#65 (Linux precedent), #58 (CLI proxy so a Client-only install talks to a local/remote server).
Windows half of the cross-platform packaging split (Linux shipped in #65). Split out from #66.
Goal
The NSIS installer offers component selection — Client / Server / Both (default Both):
chess-db.exeonPATH.LPDOServer) runningchess-db serve, data underC:\ProgramData\LPDO(mirrors the Linux/var/lib/lpdosystem model).Approach (planned)
LPDO_DATA_DIRenv override inchess-db(required — Windowsdirs::home_dir()ignores$HOME, so the Linux redirect can't work). Linux-testable, lands first.chess-db serveisn't SCM-aware; baresc create→ error 1053; thewindows-servicecrate is Windows-only Rust). LocalSystem for v1.installMode: perMachine): Components page; PREINSTALL stops the service (exe-lock/upgrade), POSTINSTALL adds PATH + createsC:\ProgramData\LPDO+ registers/starts the service; PREUNINSTALL stops+removes the service and PATH but keeps the data (mirrors Linux postrm).tauri-action --bundles nsispicks up the template/hooks. Dry-run viaworkflow_dispatch+ throwaway tag.Validation
CI compiles the NSIS installer; real install/service/ACL/PATH behaviour is verified by a manual Windows test (no Linux dev access to Windows).
Related
#60/#65 (Linux precedent), #58 (CLI proxy so a Client-only install talks to a local/remote server).