EverestAPI / EverestAPI/Everest

Installing Everest to a drive with a filesystem that does not support symlinks fails on Linux

Open
#1,151 0 comments 0 reactions 1 assignee Claimed by @SnipUndercover View on GitHub
bug
Dominant language
C#
Stars
516
Forks
106
Avg merge
4d 9h
Merged PRs (30d)
5

Description

### My mods and Everest install are up to date

Yes

### I have recreated the bug with only Everest OR a minimum number of mods enabled

Yes

### Describe the bug

As described in the title, when the user attempts to install Everest to an external drive with a filesystem that does not support symlinks (the example I ran into was exFAT) on Linux, MiniInstaller crashes when trying to symlink the `Content/` folder.

### Steps to reproduce

1. Install Celeste to a drive with a filesystem like exFAT, FAT32, etc
2. Install Everest to it
3. explode

### Expected behavior

MiniInstaller should fall back to making a copy of the Content folder, just like Windows does.

### Operating System

Arch Linux

### Everest Version

6418

### Mods required to reproduce

_No response_

### Additional context

Relevant `log-sharp.txt` snippet:
```
Applying patch vanilla libraries
System.UnauthorizedAccessException: Access to the path '/run/media/.../Celeste/orig/Content' is denied.
--> System.IO.IOException: Operation not permitted
--- End of inner exception stack trace ---
at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirError)
at Interop.CheckIo(Int64 result, String path, Boolean isDirError)
at System.IO.Directory.CreateSymbolicLink(String path, String pathToTarget)
at MiniInstaller.BackUp.CreateBackupSymlinks() in MiniInstaller/BackUp.cs:line 86
at MiniInstaller.BackUp.Backup() in MiniInstaller/BackUp.cs:line 73
at MiniInstaller.Program.StandardMode(String[] args) in MiniInstaller/Program.cs:line 67
```

The exception is caught but is rethrown if the OS is not Windows:
https://github.com/EverestAPI/Everest/blob/a756f4710f81dd30e41469a950fd245451dd55d9/MiniInstaller/BackUp.cs#L71-L81

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.