WIP: Ask for the Windows builder install folder before downloading tools #703

Closed
monsterlag wants to merge 26 commits from fix/setup-install-location into main
monsterlag commented 2026-11-08 17:49:37 +00:00 (Migrated from github.com)

Problem

The Windows bootstrap writes large tool payloads into its default folder before offering a destination or size consent. Same-tag Repair also removes the previous payload before its replacement is ready. This addresses the installer destination/consent portion of #600.

Behavior

Choose a parent folder and confirm its dedicated HookshotBuilder child before payload writes. Show the full destination, compressed/unpacked logical bytes, temporary budget and free space; a full drive still permits Change or Cancel. Prepare a unique owned attempt and publish only after validation, preserving prior files on failure. Remember the location only after success. Owned updates/Repair stay in that source root; verified legacy updates retain their route. Unknown folders remain unprunable.

First-adoption maintainer action is required. Current releases lack the size companion, so the Windows package job is expected to remain blocked until the prior release's companion is generated from complete existing SHA-verified ZIPs and uploaded beside its exact list, or the new package is published from fully staged parts without reuse. The offline release_parts.py space command measures actual ZIP metadata without downloading, extracting or launching anything. No real legacy companion was generated for this PR.

#331 remains open upstream; this branch normally merges its reviewed published head d702be5. The setup-list grammar stays unchanged. Publishers upload hookshot-setup-space.txt beside the exact list. Reused parts inherit only bound prior facts; new ZIPs are measured again. Missing/stale facts fail explicitly. The new bootstrap cannot install older releases missing the companion.

Checks

Seventeen authored space/reuse/bootstrap cases and all 26 release identity/package checks pass. The actual original auto-merged publisher returned success with incomplete reused-part facts; the fixed publisher emits a complete validated companion. The current managed owned-root fixture passes 30 checks. Real setup.c compilation and the preview compile/link pass with the Windows SDK/MSVC; self-contained WPF Release publishes at final head 9226678, with matching embedded stamps in both EXE and DLL. The upstream strict test runner and native SDK checks are preserved. The production-dialog preview covered folder changes under low space, recorded-only Install, and Cancel without installer writes; that unchanged dialog behavior and its evidence are preserved.

Hosted package CI is intentionally blocked on the first-adoption prerequisite above. This PR remains a draft until that migration is completed; local checks are not a full hosted-CI pass or release-ready claim.

Limits

No real installer, network update, downloaded GUI, native tar extraction, game build or Repair GUI end-to-end run. Preview Install recorded consent only. Native installation keeps released current-only cleanup for owned versions; managed preparation retains older versions and can consume more disk. No broad legacy-process safety or configurable retention policy is claimed. Game work/output placement and PR623 cleanup remain separate. Invalid selected folders require rerunning setup. Normal Windows drive paths within the native path budget are supported; no registry/PATH/elevation changes.

## Problem The Windows bootstrap writes large tool payloads into its default folder before offering a destination or size consent. Same-tag Repair also removes the previous payload before its replacement is ready. This addresses the installer destination/consent portion of #600. ## Behavior Choose a parent folder and confirm its dedicated `HookshotBuilder` child before payload writes. Show the full destination, compressed/unpacked logical bytes, temporary budget and free space; a full drive still permits Change or Cancel. Prepare a unique owned attempt and publish only after validation, preserving prior files on failure. Remember the location only after success. Owned updates/Repair stay in that source root; verified legacy updates retain their route. Unknown folders remain unprunable. **First-adoption maintainer action is required. Current releases lack the size companion, so the Windows package job is expected to remain blocked until the prior release's companion is generated from complete existing SHA-verified ZIPs and uploaded beside its exact list, or the new package is published from fully staged parts without reuse.** The offline `release_parts.py space` command measures actual ZIP metadata without downloading, extracting or launching anything. No real legacy companion was generated for this PR. [#331](https://git.magicbean.dev/MagicBeanDev/Hookshot/pulls/331) remains open upstream; this branch normally merges its reviewed published head `d702be5`. The setup-list grammar stays unchanged. Publishers upload `hookshot-setup-space.txt` beside the exact list. Reused parts inherit only bound prior facts; new ZIPs are measured again. Missing/stale facts fail explicitly. The new bootstrap cannot install older releases missing the companion. ## Checks Seventeen authored space/reuse/bootstrap cases and all 26 release identity/package checks pass. The actual original auto-merged publisher returned success with incomplete reused-part facts; the fixed publisher emits a complete validated companion. The current managed owned-root fixture passes 30 checks. Real setup.c compilation and the preview compile/link pass with the Windows SDK/MSVC; self-contained WPF Release publishes at final head `9226678`, with matching embedded stamps in both EXE and DLL. The upstream strict test runner and native SDK checks are preserved. The production-dialog preview covered folder changes under low space, recorded-only Install, and Cancel without installer writes; that unchanged dialog behavior and its evidence are preserved. Hosted package CI is intentionally blocked on the first-adoption prerequisite above. This PR remains a draft until that migration is completed; local checks are not a full hosted-CI pass or release-ready claim. ## Limits No real installer, network update, downloaded GUI, native tar extraction, game build or Repair GUI end-to-end run. Preview Install recorded consent only. Native installation keeps released current-only cleanup for owned versions; managed preparation retains older versions and can consume more disk. No broad legacy-process safety or configurable retention policy is claimed. Game work/output placement and PR623 cleanup remain separate. Invalid selected folders require rerunning setup. Normal Windows drive paths within the native path budget are supported; no registry/PATH/elevation changes.
shayderrr commented 2026-11-08 18:28:36 +00:00 (Migrated from github.com)

Fix conflicts please

Fix conflicts please
NotRexed commented 2026-11-09 05:30:07 +00:00 (Migrated from github.com)

Closing to keep the queue clear — please rebase on current main and reopen; thanks!

Closing to keep the queue clear — please rebase on current main and reopen; thanks!
Commenting is not possible because the repository is archived.
No description provided.