Skip to content

Wire adaptor mod installers and mod types into Vortex#22527

Open
halgari wants to merge 4 commits intomasterfrom
halgari/app-320
Open

Wire adaptor mod installers and mod types into Vortex#22527
halgari wants to merge 4 commits intomasterfrom
halgari/app-320

Conversation

@halgari
Copy link
Copy Markdown
Contributor

@halgari halgari commented Apr 16, 2026

Summary

Connects the adaptor bridge to Vortex's install and deployment pipeline so adaptor-declared games can install and deploy mods end-to-end.

  • Register a single "adaptor" installer (priority 25) that delegates archive contents to whichever adaptor owns the active game, normalizing Windows backslash paths to forward-slash before dispatch
  • Register mod types for non-game anchors (saves, preferences, etc.) returned by the adaptor's path service, with setmodtype instructions emitted during install
  • Validate adaptor path entries and install mappings at runtime to catch malformed IPC responses early
  • Mixed-anchor mods (targeting multiple deploy locations) are rejected with a clear error

Resolves APP-320

halgari added 4 commits April 16, 2026 09:59
Register a single "adaptor" installer (priority 25) in the bridge that
gates on gameId via getAdaptorInstaller and delegates to the per-game
dispatch populated during setup(). Maps InstallMapping[] to IInstruction[]
with type "copy". Throws if no adaptor installer is registered for the
game (adaptor-managed games without an installer service fall through
to supported: false and hit the generic fallback instead).
InstallManager's buildFileList produces backslash-separated paths on
Windows and includes directory entries (trailing separator). Adaptors
expect forward-slash RelativePaths. Normalize separators and filter
directory entries at the bridge boundary before dispatching.
After paths resolve in setup(), register a Vortex mod type for each
non-game anchor in the adaptor's GamePaths (e.g. saves, preferences).
The installer callback now checks the anchor field on mappings: if all
files target a single non-game anchor, a setmodtype instruction is
emitted so the mod deploys to the correct location. Mixed anchors in
a single mod throw an error since Vortex only supports one mod type
per mod.

Also adds qpPathToNative helper to convert serialized QualifiedPath
URI-style paths to native OS paths for registerModType's getPath.
- Validate paths entries at runtime before treating as SerializedQP
- Use IInstruction[] instead of hand-rolled type annotation
- Guard against empty install mappings from adaptor
- Fix Bluebird return type for mod type test callback
- Correct fomod priority comment to reference both installers
@halgari halgari marked this pull request as ready for review April 16, 2026 19:16
@halgari halgari requested a review from a team as a code owner April 16, 2026 19:16
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.

1 participant