-
Notifications
You must be signed in to change notification settings - Fork 181
Closed
Nexus-Mods/fomod-installer
#18Description
Problem
The current FOMOD installer always invokes UI delegates (startDialog, updateState, endDialog) even when a complete fomodChoices preset is provided for automated installation. This creates unnecessary complexity and IPC overhead when installing mods as part of a collection where user interaction is not needed.
Current behavior:
- Client calls
InstallwithfomodChoicesparameter - Installer calls
m_Delegates.ui.StartDialog() - Installer waits for user to trigger
selectandcontcallbacks - Each callback triggers IPC round-trip to client
- Vortex automates the UI callbacks based on the
fomodChoicespreset but is extremely error prone - If the UI callbacks fail for some reason, the user will be prompted to make the selections manually and block the flow.
- If the
fomodChoicespredicates are not met upon mod installation - there's a chance for the mod to "install" with no files present! (collections should not care for any mod pre-requisites, they're supposed to install the mod as is on the curator's machine)
Why this is a problem:
- Unnecessary IPC overhead - multiple round-trips for callbacks that do nothing
- Complex client code - must implement stub UI delegates even for headless scenarios
- Unreliable fomod installations - see 7 above.
Current Workaround
The fomodChoices preset (line 625 in Server.cs) only suggests which options to select - it doesn't bypass the UI flow.
Potential Solutions
- Add Headless Execution - whenever a preset is set, drop the IPC round-trip calls to the client and just use the provided options to generate the instructions in one go.
Benefits:
- 90% reduction in IPC calls - One request, one response
- Faster installation - No waiting for multiple roundtrips
- More reliable - Fewer socket operations = fewer failure points
- Enables phase removal - No longer need to deploy for file detection
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels