EverestAPI / EverestAPI/Everest
Installing Everest to a drive with a filesystem that does not support symlinks fails on Linux
- 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
Assessment
This issue has not been assessed yet.