Repository navigation
feat: interactive installer (#6) - #27
Merged
Merged
Conversation
scripts/install.ps1 sets wsldrive up so that after a reboot the drive(s) mount automatically with zero manual tweaking, and confirms every choice with the user first (drive letter, distro, paths, whether to restart WSL). The installer performs all the elevation-time steps itself: - installs binaries to Program Files - checks for / chain-installs WinFsp (--WinFspMsi), Direction A only - registers the Hyper-V socket service GUIDs (reuses register-hvsocket.ps1) - runs `wsl --shutdown` once, with confirmation - registers an at-logon scheduled task per direction that mounts on every boot and re-discovers the dynamic WSL VM GUID each time - stages the Linux binary into the distro for Direction B Interactive by default; -Unattended for scripted installs, -DryRun to preview the full plan without changing anything, -Uninstall to remove tasks + registration + binaries. Idempotent; self-elevates preserving args. README: new Install section documenting the guided flow. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds an optional Windows wizard installer alongside the script. The GUI collects the same choices (directions, drive letter, distro, paths, hvsocket, WSL-restart consent) and then hands off to install.ps1 -Unattended, which stays the single source of truth. The script remains fully usable on its own for CI / locked-down machines / preference. - installer/wsldrive.iss: Inno Setup 6 script — custom wizard pages (directions, Direction A/B settings with runtime distro discovery), lays binaries into Program Files, runs install.ps1 at ssPostInstall, registers uninstall (install.ps1 -Uninstall). x64, admin manifest. - scripts/build-installer.ps1: compiles the .iss with ISCC (offers to install Inno Setup via winget with -InstallInno). Output: installer/dist/wsldrive-setup.exe. - install.ps1: add -NoShutdown (installer drives the WSL restart itself) and -LinuxBin (stage the Direction B Linux client); skip the binary copy when BinDir == InstallDir (installer already placed them). - README Install section documents GUI + script; .gitignore installer/dist. Note: the .iss could not be compile-tested in this environment (Inno Setup not installed); the install.ps1 handoff was validated end-to-end via -DryRun. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add .github/workflows/release.yml: on a v* tag (or manual dispatch) it builds the Linux client, builds the Windows binaries against the WinFsp SDK, compiles the Inno Setup installer, and publishes a GitHub Release with wsldrive-setup.exe, wsldrive-windows-x64.zip (raw binaries + script), and wsldrive-linux-x64. Verifies mount support is actually linked so a release can't silently ship a mount-less build. README: restructure Install into three routes ordered by convenience — (1) download wsldrive-setup.exe from Releases, (2) run install.ps1 from the zip, (3) build the installer from source — noting all three do the same thing since the GUI just drives the script. Note: release.yml and the .iss are not yet exercised end-to-end (needs a tag / an Inno Setup toolchain); the install.ps1 logic they invoke is dry-run validated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Implements the installer (#6):
scripts/install.ps1gets wsldrive to the point where, after a reboot, the drive(s) mount automatically with no manual tweaking — and it confirms every choice with the user first (drive letter, distro, paths, whether to restart WSL).What it does
All the elevation-time / one-time steps are performed by the installer, not the user:
-WinFspMsi), Direction A onlyregister-hvsocket.ps1)wsl --shutdownonce, with explicit confirmationThe only thing the user supplies is what to mount where.
UX
-Unattendedfor scripted installs,-DryRunto print the full plan changing nothing,-Uninstallto remove tasks + registration + binaries.Validated end-to-end via
-DryRunfor both directions, uninstall, and the elevation relaunch. Parses clean. (A real install mutates the system, so that is left for a deliberate elevated run.)README gains an Install section documenting the guided flow.
Generated with Claude Code