Skip to content

fix(installer): name steam.exe, not the hook DLL, in the close-Steam command - #127

Merged
vibesoftwarecoder merged 1 commit into
masterfrom
fix/installer-steam-exe-path
Oct 21, 2026
Merged

vibesoftwarecoder merged 1 commit into
masterfrom
fix/installer-steam-exe-path

Conversation

@vibesoftwarecoder

Copy link
Copy Markdown
Owner

Fixes #126

When an isolated Steam blocks an upgrade, the installer prints a command to close it.
That command passed MultiSeat.SteamHook.dll after --steam.
The launcher wants the path to steam.exe there, so it printed its usage text and did nothing.

The cause was the Path field on the process list.
For a process found by a loaded module, Path holds the module that matched, not the program.
steam.exe loads the hook DLL, so its Path was the DLL.
The message builder used that Path.

Each process entry now also has an ImagePath field with the process's own exe.
It is read from the process, with a Win32_Process fallback, and is null when neither works.
The message uses the first steam entry whose ImagePath ends in steam.exe.
If there is none, it keeps the placeholder.
Path is unchanged, so nothing else that reads it is affected.

Tested:

  • New tests: a holder whose Path is the hook DLL and whose ImagePath is steam.exe prints steam.exe. A holder with no ImagePath prints the placeholder. A DLL-image entry does not beat a later real steam.exe. A real running process in a temp SteamIsolation folder gets its ImagePath filled and printed.
  • I reverted only the message change and confirmed the first test fails, then restored it and confirmed it passes.
  • Full suite: 1643 passed, 18 skipped, 0 failed. The script lint passes under PowerShell 5.1 and 7.

Not tested: I did not re-run this against a live isolated Steam. The tests use a stand-in steam.exe. The 32-bit steam.exe fallback path was not exercised.

The two-minute delay before Steam exited, noted in the issue, is a separate question and is not changed here.

🤖 Generated with Claude Code

…command (#126)

Get-ProcessesUsingFolder records the module that matched in Path, which for
steam.exe is MultiSeat.SteamHook.dll. The close-Steam command took that Path
and printed the DLL after --steam.

Every process entry now also carries ImagePath, the process's own exe (from
MainModule, falling back to Win32_Process.ExecutablePath, else null).
Format-SteamInUseMessage uses the first 'steam' entry whose ImagePath ends in
steam.exe, and keeps the <path to steam.exe> placeholder otherwise. Path is
unchanged.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@vibesoftwarecoder
vibesoftwarecoder merged commit aa80789 into master Oct 21, 2026
3 checks passed
@vibesoftwarecoder
vibesoftwarecoder deleted the fix/installer-steam-exe-path branch October 21, 2026 16:59
vibesoftwarecoder added a commit that referenced this pull request Oct 21, 2026
Bump version.txt and add the 0.6.23 notes.

- #128 (fixes #124)
- #127 (fixes #126)

Co-authored-by: vibesoftwarecoder <vibesoftwarecoder@users.noreply.github.com>
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The installer's "close Steam" command passes SteamHook.dll where steam.exe belongs

1 participant