Citra: [Feature Request] Detect "user" folder from directory above canary/nightly-mingw

Created on 5 Sep 2019  路  3Comments  路  Source: citra-emu/citra

As of right now you can make a user folder where the citra-qt.exe is located and have all the files from appdata populate to the user folder instead.

This is inconvenient because if I want to use Nightly instead of Canary, I have to copy or move all those files to where THAT citra-qt.exe is located. If it was the Citra folder itself (where maintenencetool.exe is located) that would be optimal.

#

One user folder that is interchangeable between Citra builds

#

EDIT: It might also be good to have an option to change where the files and folders populate entirely. IE Someone might have Citra on a SSD and not want to make a user folder in Citra's directory, but might not also want them in appdata either.

Most helpful comment

Doesn't sound bad at all, in the meantime though, you can use symbolic links to link those two "user directories" (of Nightly and Canary) to a physical one (stored in Documents, for example). From my experience, it works pretty well and you can create them for subdirectories of the "user" directory, so you can choose which parts you want to share between Nightly and Canary builds.

Before making any changes, make a backup first (copy your user directory onto desktop in case something goes wrong)!

On Windows, I did it like this (I'm sure it can be done on Mac and Linux with different commands and paths in terminal as well):

  1. Create a directory, where you want to have the user data stored (the name doesn't matter)
    Example: C:\Users\David\Documents\Citra\user-main
  2. Move the data to the new directory you've just created and delete the "user" directory in Citra Nightly/Canary
    Citra Canary: C:\Users\David\AppData\Local\Citra\canary-mingw\user
    Citra Nightly: C:\Users\David\AppData\Local\Citra\nightly-mingw\user
  3. Now you want to create a new symbolic link to your new directory (run 'cmd' as administrator!)
    Syntax: mklink /D Link Target
    Example 1: mklink /D "C:\Users\David\AppData\Local\Citra\canary-mingw\user" "C:\Users\David\Documents\Citra\user-main" (links user directory of Citra Canary to the one in Documents named 'user-main')
    Example 2: mklink /D "C:\Users\David\AppData\Local\Citra\nightly-mingw\user" "C:\Users\David\Documents\Citra\user-main" (links user directory of Citra Nightly to the one in Documents named 'user-main')
  1. The command prompt will return something similar to this:
    symbolic link created for C:\Users\David\AppData\Local\Citra\canary-mingw\user <<===>> C:\Users\David\Documents\Citra\user-main
  • If you don't want to write the full path, you can use variables instead:
    %localappdata% = C:\Users\YourUsername\AppData\Local
    %userprofile% = C:\Users\YourUsername
    Example 1 (shortened): mklink /D "%localappdata%\Citra\canary-mingw\user" "%userprofile%\Documents\Citra\user-main"
    Example 2 (shortened): mklink /D "%localappdata%\Citra\nightly-mingw\user" "%userprofile%\Documents\Citra\user-main"

  • You can also link only saves (or basically any other individual directory), if you want to have different configurations on Canary and Nightly (linking 'sdmc' only):
    Example 1: mklink /D "C:\Users\David\AppData\Local\Citra\canary-mingw\user\sdmc" "C:\Users\David\Documents\Citra\user-main\sdmc"
    Example 2: mklink /D "C:\Users\David\AppData\Local\Citra\nightly-mingw\user\sdmc" "C:\Users\David\Documents\Citra\user-main\sdmc"
    Just make sure you created 'sdmc' folder in your created directory and you copied over the contents.

All 3 comments

Doesn't sound bad at all, in the meantime though, you can use symbolic links to link those two "user directories" (of Nightly and Canary) to a physical one (stored in Documents, for example). From my experience, it works pretty well and you can create them for subdirectories of the "user" directory, so you can choose which parts you want to share between Nightly and Canary builds.

Before making any changes, make a backup first (copy your user directory onto desktop in case something goes wrong)!

On Windows, I did it like this (I'm sure it can be done on Mac and Linux with different commands and paths in terminal as well):

  1. Create a directory, where you want to have the user data stored (the name doesn't matter)
    Example: C:\Users\David\Documents\Citra\user-main
  2. Move the data to the new directory you've just created and delete the "user" directory in Citra Nightly/Canary
    Citra Canary: C:\Users\David\AppData\Local\Citra\canary-mingw\user
    Citra Nightly: C:\Users\David\AppData\Local\Citra\nightly-mingw\user
  3. Now you want to create a new symbolic link to your new directory (run 'cmd' as administrator!)
    Syntax: mklink /D Link Target
    Example 1: mklink /D "C:\Users\David\AppData\Local\Citra\canary-mingw\user" "C:\Users\David\Documents\Citra\user-main" (links user directory of Citra Canary to the one in Documents named 'user-main')
    Example 2: mklink /D "C:\Users\David\AppData\Local\Citra\nightly-mingw\user" "C:\Users\David\Documents\Citra\user-main" (links user directory of Citra Nightly to the one in Documents named 'user-main')
  1. The command prompt will return something similar to this:
    symbolic link created for C:\Users\David\AppData\Local\Citra\canary-mingw\user <<===>> C:\Users\David\Documents\Citra\user-main
  • If you don't want to write the full path, you can use variables instead:
    %localappdata% = C:\Users\YourUsername\AppData\Local
    %userprofile% = C:\Users\YourUsername
    Example 1 (shortened): mklink /D "%localappdata%\Citra\canary-mingw\user" "%userprofile%\Documents\Citra\user-main"
    Example 2 (shortened): mklink /D "%localappdata%\Citra\nightly-mingw\user" "%userprofile%\Documents\Citra\user-main"

  • You can also link only saves (or basically any other individual directory), if you want to have different configurations on Canary and Nightly (linking 'sdmc' only):
    Example 1: mklink /D "C:\Users\David\AppData\Local\Citra\canary-mingw\user\sdmc" "C:\Users\David\Documents\Citra\user-main\sdmc"
    Example 2: mklink /D "C:\Users\David\AppData\Local\Citra\nightly-mingw\user\sdmc" "C:\Users\David\Documents\Citra\user-main\sdmc"
    Just make sure you created 'sdmc' folder in your created directory and you copied over the contents.

That worked very nicely. Thank you for the guidance those examples made it really easy.

Here's some examples for the original post:

  • If user folder is in the Citra folder
    Canary: mklink /D "D:\SteamLibrary\steamapps\common\Citra\canary-mingw\user" "D:\SteamLibrary\steamapps\common\Citra\user"
    Nightly: mklink /D "D:\SteamLibrary\steamapps\common\Citra\nightly-mingw\user" "D:\SteamLibrary\steamapps\common\Citra\user"

  • user folder on a different drive
    Canary: mklink /D "D:\SteamLibrary\steamapps\common\Citra\canary-mingw\user" "F:\Citra\user"
    Nightly: mklink /D "D:\SteamLibrary\steamapps\common\Citra\nightly-mingw\user" "F:\Citra\user"

You're welcome! Just when you are linking directories across different drives, make sure you have them both connected to your computer, if either of them is connected as an external drive.

Was this page helpful?
0 / 5 - 0 ratings