Repository navigation
fix(bootstrap): extract the Windows client under a short path - #188
Merged
Merged
Conversation
innoextract has no long path support, so staging the extraction beside the target put the deepest asset (129 characters) over the 260 character limit on some installs. Stage under the temp folder instead, fall back to the drive root, and report the staging path length when extraction fails.
This was referenced Oct 30, 2026
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #187
On Windows,
bootstrap.ps1staged the innoextract output at<src>\.vanilla\win-x64\.innoextract-stage-<guid>. innoextract has no long path manifest, so the 260 character limit applies to it even withLongPathsEnabled. That prefix adds about 115 characters before the deepest installer entry (129 characters), which put some installs over the limit. The reporter's log shows 244 characters with the user name as pasted, so I could not confirm the limit as the cause from the logs alone; the change shortens the path by roughly 60 characters either way.What changed:
scripts/extract-stage-root.ps1addsNew-ExtractStageRoot. It creates a short directory (optimum-ix-<8 hex>) under the temp folder, then the drive root, then the old location, and skips any candidate where the deepest entry would pass 240 characters.bootstrap.ps1uses it on Windows. Other platforms keep the staging folder beside the target, so the final move stays a rename. The existing robocopy move into.vanilla\win-x64\vintagestoryis unchanged.-VanillaDirworkaround.scripts/tests/extract-stage-root.ps1covers candidate order, skipping long candidates, the fallback, unique directories, the hint text and thatbootstrap.ps1uses the helper. A new Shell scripts job runs it under Windows PowerShell 5.1.Testing:
bootstrap.ps1parses without errors. Bootstrap.Core (220), Installer (104) and Cli (25) tests andbootstrap-git-repository.shpass.