Skip to content

Fix symlinks on unsupported filesystems on OSes other than Windows - #1159

Draft
SnipUndercover wants to merge 4 commits into
EverestAPI:devfrom
SnipUndercover:fix-symlinks-on-unsupported-filesystems
Draft

SnipUndercover wants to merge 4 commits into
EverestAPI:devfrom
SnipUndercover:fix-symlinks-on-unsupported-filesystems

Conversation

@SnipUndercover

@SnipUndercover SnipUndercover commented Aug 9, 2026 •

Copy link
Copy Markdown
Member

Currently, installing Everest to a drive with a filesystem that does not support symlinks (like FAT32, exFAT, and others) will crash MiniInstaller completely, instead of falling back to copying the file.

Normally Windows would have shown a message box for this case, but neither Linux or macOS had fallback mechanisms for that.

This PR adds the prompt to other filesystems, leveraging SDL2's SDL_ShowMessageBox API that's cross-compatible. Might as well use the SDL2 we ship, right?
It will fall back to copying files if the user chooses to proceed, and will exit early if the user chooses to cancel.

Furthermore, the elevation prompt has also been changed to use SDL's API.

Keeping as draft until all OSes have been tested following the TODO list below.

Note

Most of the daunting +9300 additions are caused by a copy-paste of EverestSplash's SDL bindings.

TODOs

  • Windows
    • Install on a filesystem that DOES support symlinks and WITH elevation (NTFS tested)
    • Install on a filesystem that DOES support symlinks but WITHOUT elevation (NTFS tested)
    • Install on a filesystem that DOES NOT support symlinks (FAT32 tested)
  • Linux
    • Install on a filesystem that DOES support symlinks
    • Install on a filesystem that DOES NOT support symlinks
  • macOS
    • Install on a filesystem that DOES support symlinks
    • Install on a filesystem that DOES NOT support symlinks

@maddie480-bot maddie480-bot added the 0: draft This PR is not ready for review yet (bot-managed) label Aug 9, 2026
Comment thread MiniInstaller/LibAndDepHandling.cs Resolved
@DashingCat

Copy link
Copy Markdown
Contributor

I tested the changes on Linux, and as far as I can tell it works properly on my end:

  • running MiniInstaller normally creates the symlinks as expected,
  • simulating an unsupported filesystem using strace -e 'trace=symlink' -e 'fault=symlink:error=EPERM' --follow-forks raises the SDL/zenity dialog, and my filesystem was correctly identified

This branch has not been deployed

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

Labels

0: draft This PR is not ready for review yet (bot-managed)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants