Installer: user-mode install via /CURRENTUSER (PR-B)#2022
Draft
tyrielv wants to merge 6 commits into
Draft
Conversation
Adds LocalRepoRegistration (POCO + source-gen JSON context) and LocalRepoRegistry (instance class) to GVFS.Common. Wire-compatible with the service's on-disk repo-registry format. 18 new unit tests. 836/836 pass (818 prior + 18 new). Assisted-by: Claude Opus 4.8 Signed-off-by: Tyrie Vella <tyrielv@gmail.com>
…navailable MountVerb.RegisterMount, UnmountVerb.UnregisterRepo, and ServiceVerb.TryGetRepoList fall back to LocalRepoRegistry when the service pipe fails to open. Behavior unchanged when service is running. UnmountVerb distinguishes not-found (benign no-op) from I/O errors (propagated to caller) in the fallback path. Assisted-by: Claude Opus 4.8 Signed-off-by: Tyrie Vella <tyrielv@gmail.com>
…navailable Returns true when the service pipe fails to open. In user-level install model the boot-time EnableProjFSOnAllDrives task handles PrjFlt. Removes now-orphaned StartServiceInstructions constant. Assisted-by: Claude Opus 4.8 Signed-off-by: Tyrie Vella <tyrielv@gmail.com>
Adds IScheduledTaskInvoker, SchTasksScheduledTaskInvoker, and LogonTaskRegistration. Manages a per-user logon task that runs gvfs.exe service --mount-all via conhost.exe --headless to prevent console window flash. Drift detection via full SHA-256 hash marker. 21 new unit tests. 857/857 pass. Assisted-by: Claude Opus 4.8 Signed-off-by: Tyrie Vella <tyrielv@gmail.com>
… task Three files under scripts/projfs-attach/: the PS1 script body, the task XML template with placeholders, and build-task-xml.ps1 that base64-encodes the script into the template. None deployed to disk; the installer embeds via -EncodedCommand. Assisted-by: Claude Opus 4.8 Signed-off-by: Tyrie Vella <tyrielv@gmail.com>
Extends the existing Inno Setup installer with a /CURRENTUSER flag
that routes to a complete user-mode install path. Default behavior
(admin, system-mode) is unchanged.
User-mode (/CURRENTUSER) flow:
1. Drift-detect: checks ProjFS enabled + EnableProjFSOnAllDrives
task registered with current hash marker
2. If drift detected: self-elevates via /ADMINSTAGE=true to enable
ProjFS and register the task from pre-built embedded XML
3. Deploys payload to %LocalAppData%\GVFS\Versions\<version>\
4. Creates/swaps Current junction with verification + rollback
5. Updates user PATH (HKCU) and GVFS env vars
6. Registers per-user \GVFS\AutoMount logon task (conhost --headless)
7. GCs old versions (keeps most recent 2)
Build changes:
- GVFS.Installers.csproj: BuildProjFSTaskXml target runs
build-task-xml.ps1 and passes output to ISCC
- Setup.iss: PrivilegesRequiredOverridesAllowed=commandline
Review fixes incorporated:
- /ADMINSTAGE=true (not bare /ADMINSTAGE) for Inno Setup param parsing
- Junction rollback reads old target via fsutil reparsepoint query
and actually restores it via mklink /J
- Logon task XML declares UTF-8 encoding (matches SaveStringToFile)
Assisted-by: Claude Opus 4.8
Signed-off-by: Tyrie Vella <tyrielv@gmail.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.
PR-B: Extend the existing installer with user-mode install path
Stacked on PR #2020 (PR-A: co-shippable infrastructure).
Adds a /CURRENTUSER\ flag to the existing \SetupGVFS.exe\ installer (Inno Setup 6 \PrivilegesRequiredOverridesAllowed=commandline). Default behavior (admin, system-mode) is unchanged.
User-mode flow (\SetupGVFS.exe /VERYSILENT /CURRENTUSER)
Build changes
\GVFS.Installers.csproj: new \BuildProjFSTaskXml\ MSBuild target runs \�uild-task-xml.ps1\ (from PR-A commit A5) and passes the output to ISCC.
Testing