Skip to content

Support .ini mods that are installed to the LocalAppData config directory #1

Description

@chatterchats

Feature request

It would be useful for ZCOM Mod Manager to support mods whose payload is not installed into the main SWZeroCompany game directory, but instead replaces configuration files under the game's LocalAppData directory.

There are already mods on Nexus that use this installation method, for example:

On Windows, these files are installed under:

%LOCALAPPDATA%\SWZeroCompany\Saved\Config\Windows\

For example:

%LOCALAPPDATA%\SWZeroCompany\Saved\Config\Windows\GameUserSettings.ini
%LOCALAPPDATA%\SWZeroCompany\Saved\Config\Windows\Engine.ini

Suggested behavior

I think these could be treated similarly to the existing replacement-style game-folder mods, except with a distinct LocalAppData config deployment target.

When inspecting an archive, ZCOM could mods containing either or both files in the base dir:

GameUserSettings.ini
Engine.ini

or in a folder structure such as:

SWZeroCompany/
└── Saved/
    └── Config/
        └── Windows/
            └── Engine.ini

and deploy them to:

%LOCALAPPDATA%\SWZeroCompany\Saved\Config\Windows\

Ideally the implementation would support arbitrary files beneath that config directory rather than hardcoding only Engine.ini and GameUserSettings.ini, since future mods may modify other UE configuration files (see Unreal Engine Docs)

Backup / restore

Because these files commonly already exist and may contain user settings, the existing safe replacement behavior would be particularly important here.

Suggested lifecycle:

  1. Before first deployment, preserve the user's original file in the managed library.
  2. Deploy the modded .ini.
  3. On disable, restore the original file.
  4. On re-enable, redeploy the managed modded version.
  5. On uninstall, restore the original file.
  6. Preserve the original backup when upgrading from one version of the same mod to another.

The existing checksum/ownership protections would also be useful here. If the live .ini has changed unexpectedly since ZCOM deployed it, for example because the user edited it manually or the game rewrote it, the manager should avoid silently overwriting those changes, and perhaps add a warning to the mod card that it has been manually edited

Conflicts

Two enabled mods may both provide something like Engine.ini.

Initially, I think treating that as a normal filesystem collision would be safest:

Mod A -> Engine.ini
Mod B -> Engine.ini

ZCOM could report that both mods target the same configuration file rather than silently choosing one.

INI-aware merging could potentially be a useful future enhancement, but simple full-file replacement with backup/restore would cover the mods that currently distribute complete replacement configuration files without introducing the complexity of merging Unreal configuration sections and keys.

Install preview

Since these files are outside the selected Steam installation, it would be helpful for the install review to make the destination especially clear, e.g.:

Configuration file

Engine.ini
→ %LOCALAPPDATA%\SWZeroCompany\Saved\Config\Windows\Engine.ini

That would make it obvious that this particular mod is modifying the user's game configuration rather than Content/Paks, UE4SS, or the game directory.

A warning to close Zero Company before enabling/disabling one of these mods may also be worthwhile, since the game can write configuration files when exiting.

Linux / Proton

Since ZCOM supports Linux/Proton as a first-class platform, it would be great if the same mod type could resolve the corresponding LocalAppData path inside the game's prefix rather than limiting the feature to native Windows.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions