I made a batch script to facilitate setting up and running alternate accounts on the same computer, minimize the space they take up and quickly synchronize them after an update or a patch.
With Odyssey update 13 I was able to verify that it still works nicely for me and I want to share it with fellow Elite: Dangerous enthusiasts. The name EliteDAlt.bat is in the thread title to make it easier to find if the thread gets buried.
Edit: If you are not interested in running multiple accounts concurrently on the same computer, then his is definitively simpler:
Note:
You still need individual e-mail addresses for each account (this requirement kept me from having an alt for a long time) and to be able to register them individually with Frontier.
I started out with a main account on Steam and recently purchased full alt accounts on Frontier's web store. The second account I purchased earlier on Steam when Odyssey was released is useless for now. EliteDAlt.bat should work without issues if the original account was installed using Frontier Developments installer, but users with Epic accounts might face some difficulties.
I put some extensive description and information in comment texts in the batch script, which is included in clear text as code in the spoiler tag. Use notepad or your favorite code editor with syntax highlighting to read it or adapt it if you have specific needs.
How to get EliteDAlt.bat:
I have attached the script to this post in a zip archive, but in case this does not work here's how to get it from the spoiler tag:
How to use EliteDAlt.bat:
This is what it looks like on my computer:
When a new update or patch arrives then I recommend to launch the original installation first (usually the launcher is enough, but because Odyssey update 13 included a new launcher I had to do the update in Steam), Launch the game, exit both game and launcher and then re-run EliteDAlt.bat from the parent directory.
I keep shortcuts to all launchers and EliteDAlt.bat in a convenient location. Make sure to create the shortcuts in the directory of the original file (right click EDLaunch.exe / EliteDAlt.bat and choose "Create shortcut"), rename them and move them to the destination so the Target and Start in paths are correct. Only for EliteDAlt.bat you should enable the Run as administrator tick in the advanced properties of the shortcut.
Here's a picture with my shortcuts:
With Odyssey update 13 I was able to verify that it still works nicely for me and I want to share it with fellow Elite: Dangerous enthusiasts. The name EliteDAlt.bat is in the thread title to make it easier to find if the thread gets buried.
Edit: If you are not interested in running multiple accounts concurrently on the same computer, then his is definitively simpler:
The simplest way that I have found to use altCMDRs (bought from the Frontier store) is to create individual copies of the launcher, with unique names, in the same directory and log in to each separately (as each discrete copy of the launcher "remembers" its own login data).
Note:
You still need individual e-mail addresses for each account (this requirement kept me from having an alt for a long time) and to be able to register them individually with Frontier.
I started out with a main account on Steam and recently purchased full alt accounts on Frontier's web store. The second account I purchased earlier on Steam when Odyssey was released is useless for now. EliteDAlt.bat should work without issues if the original account was installed using Frontier Developments installer, but users with Epic accounts might face some difficulties.
I put some extensive description and information in comment texts in the batch script, which is included in clear text as code in the spoiler tag. Use notepad or your favorite code editor with syntax highlighting to read it or adapt it if you have specific needs.
Code:
:: Purpose: create and sync multiple installations for alternate accounts for Elite:Dangerous
:: Created: 2022-06-20, forum user badibeat
:: Changed: 2022-08-26, forum user badibeat
:: Added file .script.py that came with update 13 (or Steam), updated instructions
:: Create an error in the output when a directory symbolic link should be created but a
:: File or directory already exists. (This script will not replace the dir by itself.)
:: Suppress standard output of copy and xcopy (helps spotting errors).
::
:: Disclaimer: This script was tested on a Steam account with alt accounts purchased on
:: Frontier Development's store.
:: The author makes no guarantees and takes no responsibiliy for the use of this script.
::
:: For simplicity, this windows batch script has to be executed in the parent directory
:: (folder) of the "Elite Dangerous" installation directory, one up from the the one that
:: contains EDLaunch.exe
::
:: Make sure neither a copy of the games nor a launcher are running before executing
:: this script, or there might be errors and some files missing.
::
:: This script requires that the directories for alternate accounts reside in the same location
:: (parent directory) as "Elite Dangerous" but are named with some characters appended to that
:: original name.
::
:: This directory setup makes sure all assets reside on the same filesystem.
:: The alternate installations only take up a negligible amount of disk space compared
:: to the original installation when using this script.
:: The result allows to efficiently reuse the same assets multiple between accounts, even
:: if running them concurrently on the same machine.
::
:: To add an alternate account just add an empty directory (folder) with a matching name to the
:: base directory, then run the script in the starting dir as Administrator.
::
:: Some valid examples for directory names of alternate accounts (use without the double quotes):
:: "Elite Dangerous Alt", "Elite Dangerous2", "Elite Dangerous - Copy 7", "Elite Dangerous Alt 2"
::
:: After an update or patch for the Game it is recommended to launch it with the original launcher,
:: then re-run this script to sync the files to the alt directories.
::
:: For easy launching a shortcut to each of the EDLaunch.exe files can be created, individually
:: renamed and moved to a convenient place.
::
:: Important Note: On Windows 10 this batch file has to be run with elevation
:: (as an Administrator) in the initial run or whenever a new alternate account
:: is added to create directory symbolic links and hard links.
:: In newer Windows versions elevation may no longer be required.
::
:: This batch script creates folders, directory symbolic links, a couple of hard links
:: and copies files to do its job.
:: I refrained from using junctions, as they are not safe. When moving a junction,
:: the original content gets moved into the destination which becomes a directory and
:: removed from the original location. In contrast, deleting symbolic links and hard links
:: is safe.
:: Some settings files are copied at the beginning but not overwritten in subsequent syncs.
:: It is relatively safe to delete an entire alt directory and re-create it or empty it competely,
:: as only some basic graphic settings are stored there.
:: You may want to preserve the following files:
:: "Products\elite-dangerous-64\AppConfig.xml"
:: "Products\elite-dangerous-64\GraphicsConfiguration.xml"
:: "Products\elite-dangerous-odyssey-64\AppConfig.xml"
:: "Products\elite-dangerous-odyssey-64\GraphicsConfiguration.xml"
:: This batch script uses pre-defined lists of files and directories in the body of the text.
:: If new files or directories are included with future updates, then the launcher will simply
:: take care of the missing ones. Likewise, the script does not copy files or directories which
:: are not part of the original installation. However, it is easy to change this configuration
:: which starts after ':: Here we go:'
:: Also note that NTFS symbolic links and junctions, though they appear
:: like shortcuts in Windows Explorer, cannot be created like them.
:: Similar for hard links, but they are not distinguished from normal files.
::
:: All three are features of the NTFS filesystem and may not work if the starting directory
:: resides on a different type of filesystem.
@echo off
:: We set variables inside code blocks for use outside, therefore they have to be exported.
endlocal
:: Delayed expansion is required for counting in loops and to access array variables
:: Extensions are required for pushd, the for loop, some if comparisons and arithmetic expressions with set /a.
setlocal enableDelayedExpansion enableExtensions
:: switch to the original starting directory when run as administrator, and allow to popd back later
pushd %~dp0
set ENDERROR=0
echo ------------------------------------------------------------------------------
echo Creating and synchronising alternate installations for Elite:Dangerous
echo ------------------------------------------------------------------------------
echo Starting directory is "%CD%".
:: First preparation step:
:: Collect the matching files (directories) found directly underneath the starting directory in a for loop.
:: The file names, full paths and file attributes are collected into arrays.
set FILECOUNT=0
:: Use %%F in batch and %F in command ...
:: for /d iterates only through directories.
for /d %%F in ("Elite Dangerous*") do (
set "FNM[!FILECOUNT!]=%%F"
set "FATT[!FILECOUNT!]=%%~aF"
set "FPATH[!FILECOUNT!]=%%~fF"
set /a FILECOUNT += 1
)
:: Second preparation step:
:: In a first iteration we collect only valid alt directories and check if the
:: original directory is valid.
:: The collection is stored in the lookup table ALTPOINT[] to address the
:: original arrays indirectly.
:: The iteration goes through the arrays using goto and labels.
:: I couldn't get some functions to work inside the for loop.
set ORIGFOUND=0
set ORIGISDIR=0
set ALTCOUNT=0
set INDEX=0
:COUNTSTART
if not %FILECOUNT% GTR %INDEX% goto COUNTEND
set "FILE_ATTRIBUTE=!FATT[%INDEX%]!"
set "FILE_NAME=!FNM[%INDEX%]!"
:: pick the first character of attributes which is a "d" for directories.
set FILE_ATTRIBUTE=%FILE_ATTRIBUTE:~0,1%
if "%FILE_ATTRIBUTE%"=="d" (
set ORIG=1
set ALT=1
) else (
set ORIG=0
set ALT=0
)
:: compare if the file name matches "Elite Dangerous", ignoring case.
if /i "%FILE_NAME%"=="Elite Dangerous" (
set ALT=0
set ORIGFOUND=1
) else ( set ORIG=0 )
if "%ORIG%"=="1" (
set ORIGISDIR=1
set ORIGINDEX=%INDEX%
)
if "%ALT%"=="1" (
set "ALTPOINT[%ALTCOUNT%]=%INDEX%"
set /a ALTCOUNT += 1
)
set /a INDEX += 1
goto COUNTSTART
:COUNTEND
:: Third preparation step:
:: Execute some error checks from the collected data before starting
if not %ORIGFOUND%==1 (
echo ERROR: No directory "Elite Dangerous" found in the start directory
echo "%CD%".
echo.
echo This batch file has to be executed in the parent directory of the Elite Dangerous
echo installation directory. The latter is named "Elite Dangerous" and contains EDLaunch.exe.
echo.
echo Move or copy the batch file into that parent directory and run it with elevation
echo ^(as administrator^).
echo You can for convenience create a shortcut of the batch file and move the shortcut
echo to the same location as the shortcut for the individual launchers EDLaunch.exe.
echo To run it as administrator each time open the batch shortcut's properties and in
echo tab "Shortcut" click "Advanced..." and enable "run as administrator".
echo.
set ENDERROR=1
goto END
)
if not %ORIGISDIR%==1 (
echo ERROR: "Elite Dangerous" found in the start directory but is not a directory.
echo Start directory: "%CD%".
echo.
set ENDERROR=2
goto END
)
if not exist "Elite Dangerous/EDLaunch.exe" (
echo ERROR: No EDLaunch.exe found in the "Elite Dangerous" directory.
echo Start directory: "%CD%".
echo.
set ENDERROR=3
goto END
)
if %ALTCOUNT%==0 (
echo ERROR: No alternate directories found in the same directory as "Elite Dangerous".
echo To add alternate directories with launchers simply create a new, empty directory
echo having a name that starts with but is different from "Elite Dangerous", then run
echo this batch script.
echo Start directory: "%CD%".
echo.
set ENDERROR=4
goto END
)
:: Main process:
:: Iterate through each of the alternate directories and set them up or sync them in turn.
:: Before the iteration starts:
:: Lookup the original full path and store it in SOURCEPATH
:: Initialize iteration variable(s)
set "SOURCEPATH=!FPATH[%ORIGINDEX%]!"
echo Fully qualified path of origin: "%SOURCEPATH%"
echo ------------------------------------------------------------------------------
set ALTINDEX=0
:: From here we set up each alternate directory in turn.
:: Lookup the current alternate's full path and store it in DESTPAH
:SETUPSTART
if not %ALTCOUNT% GTR %ALTINDEX% goto SETUPEND
:: The original arrays are indirectly addressed using lookup table ALTPOINT[]
set "INDEX=!ALTPOINT[%ALTINDEX%]!"
set "DESTDIR=!FNM[%INDEX%]!"
set "DESTPATH=!FPATH[%INDEX%]!"
echo.
echo.
echo ------------------------------------------------------------------------------
echo Processing directory "%DESTDIR%"
echo Fully qualified path "%DESTPATH%"
echo ------------------------------------------------------------------------------
:: --------------------------------------------------------------------------------
:: Here we go:
:: --------------------------------------------------------------------------------
:: 1) First we need to create some specific directories that cannot be linked as a whole
:: and need not be copied as a whole, but contain directories or files
:: some of which have the same content between instances and some of which need to differ.
:: You can ignore error "A subdirectory or file ... already exists." if this has run before.
:: It's a simple copy paste setup using a function to avoid the limitations of 'for'
call :DIR_CREATE "logs"
call :DIR_CREATE "Products"
call :DIR_CREATE "Products\elite-dangerous-64"
call :DIR_CREATE "Products\elite-dangerous-64\Logs"
:: call :DIR_CREATE "Products\elite-dangerous-64\Win64"
call :DIR_CREATE "Products\elite-dangerous-odyssey-64"
call :DIR_CREATE "Products\elite-dangerous-odyssey-64\Logs"
:: call :DIR_CREATE "Products\elite-dangerous-odyssey-64\Win64"
:: 2) Then we copy a few configuration files which are not to be overwritten if they already exist.
call :FILE_CREATE "Products\elite-dangerous-64\AppConfig.xml"
call :FILE_CREATE "Products\elite-dangerous-64\GraphicsConfiguration.xml"
call :FILE_CREATE "Products\elite-dangerous-odyssey-64\AppConfig.xml"
call :FILE_CREATE "Products\elite-dangerous-odyssey-64\GraphicsConfiguration.xml"
:: 3) Then copy directories which should not be replaced by directory symbolic links, and include their content
call :DIR_REPLACE "Products\elite-dangerous-64\ControlSchemes"
call :DIR_REPLACE "Products\elite-dangerous-odyssey-64\ControlSchemes"
:: 4) Create directory symbolic links for the remaining directories.
:: Alternatively it would be possible to create directory junctions
:: using the /J instead of the /D switch in the function.
:: Symbolic links require elevation to create, directory junctions only
:: access to the filesystem and are probably more efficient.
:: However, directory junctions are messy on Windows 10 as moving one
:: will empty the original directory and move the content to the newly
:: created directory.
call :DIR_SYMLINK "_CommonRedist"
call :DIR_SYMLINK "de"
call :DIR_SYMLINK "directx_redist"
:: call :DIR_SYMLINK "EmptySteamDepot"
call :DIR_SYMLINK "es"
call :DIR_SYMLINK "fr"
call :DIR_SYMLINK "pt-BR"
call :DIR_SYMLINK "ru"
call :DIR_SYMLINK "Products\COMBAT_TUTORIAL_DEMO"
call :DIR_SYMLINK "Products\elite-dangerous-64\Movies"
call :DIR_SYMLINK "Products\elite-dangerous-64\Openvr"
call :DIR_SYMLINK "Products\elite-dangerous-64\OptionDefaults"
call :DIR_SYMLINK "Products\elite-dangerous-64\PlanetShaders"
call :DIR_SYMLINK "Products\elite-dangerous-64\Win64"
call :DIR_SYMLINK "Products\elite-dangerous-odyssey-64\Movies"
call :DIR_SYMLINK "Products\elite-dangerous-odyssey-64\Openvr"
call :DIR_SYMLINK "Products\elite-dangerous-odyssey-64\OptionDefaults"
call :DIR_SYMLINK "Products\elite-dangerous-odyssey-64\PlanetShaders"
call :DIR_SYMLINK "Products\elite-dangerous-odyssey-64\Win64"
:: 5-6) Copy individual files.
:: Use call :FILE_REPLACE <relative path> to replace them with a copy from the original
:: on each execution of this batch script.
:: Use call :FILE_CREATE <relative path> to copy from the original only if they are
:: not already present and let the launcher update the file for each instance
:: if required. This is recommended for individual configuration files, some of
:: which are already moved to an earlier section.
:: Use call :HARDLINK <relative path> to create a hard link if the file does not already exist.
:: Files can be deleted prior to execution to create a new hard link. Hard links do
:: not require disk space and are updated from the original and will update the original
:: when written, therefore they are always in sync.
:: 5) Hard Link some large individual files.
:: Originally I used hard links for all files, as this is the most efficient way and
:: together with directory symbolic links eliminates the need to sync all alternates after
:: each update.
:: However, while the game launched normally, it gave me an error message when trying
:: to connect to the servers.
:: In order not to waste code and disk space this batch still uses hard links for the biggest
:: files, which in my tests still allowed me to run two accounts concurrently on the same machine.
call :HARDLINK "Products\elite-dangerous-64\EliteDangerous64.exe"
call :HARDLINK "Products\elite-dangerous-odyssey-64\EliteDangerous64.exe"
:: 6) Copy the bulk of the individual files with replace
:: After an update or patch for the Game it is recommended to launch it with the original launcher,
:: then re-run this script to sync the files to the alt directories.
call :FILE_REPLACE ".script.py"
call :FILE_REPLACE "CBViewModel.dll"
call :FILE_REPLACE "ClientSupport.dll"
call :FILE_REPLACE "CrashReporter.exe"
call :FILE_REPLACE "CrashReporter.exe.config"
call :FILE_REPLACE "EDLaunch.exe"
call :FILE_REPLACE "EDLaunch.exe.config"
call :FILE_REPLACE "EosIF.dll"
call :FILE_REPLACE "EosSdk.dll"
call :FILE_REPLACE "FilePackage.dll"
call :FILE_REPLACE "FORCServerSupport.dll"
call :FILE_REPLACE "FrontierSupport.dll"
call :FILE_REPLACE "HardwareReporter.exe"
call :FILE_REPLACE "HardwareReporter.exe.config"
call :FILE_REPLACE "LocalResources.dll"
call :FILE_REPLACE "MachineIdentifier.exe"
call :FILE_REPLACE "steam_api64.dll"
call :FILE_REPLACE "SteamIF.dll"
call :FILE_REPLACE "USS.exe"
call :FILE_REPLACE "WatchDog.exe"
call :FILE_REPLACE "WatchDog64.exe"
call :FILE_REPLACE "Products\elite-dangerous-64\AudioConfiguration.xml"
call :FILE_REPLACE "Products\elite-dangerous-64\DeviceDefaults.xml"
call :FILE_REPLACE "Products\elite-dangerous-64\dsfVorbisDecoder64.dll"
call :FILE_REPLACE "Products\elite-dangerous-64\EliteDangerous64.exe.watchdog.log"
call :FILE_REPLACE "Products\elite-dangerous-64\EOSSDK-Win64-Shipping.dll"
call :FILE_REPLACE "Products\elite-dangerous-64\GpuWorkTable.xml"
call :FILE_REPLACE "Products\elite-dangerous-64\InstallerInfo.txt"
call :FILE_REPLACE "Products\elite-dangerous-64\portaudio_x64.dll"
call :FILE_REPLACE "Products\elite-dangerous-64\Update.log"
call :FILE_REPLACE "Products\elite-dangerous-64\VersionInfo.txt"
call :FILE_REPLACE "Products\elite-dangerous-64\vp8decoder64.dll"
call :FILE_REPLACE "Products\elite-dangerous-64\webmsplit64.dll"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\AudioConfiguration.xml"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\DeviceDefaults.xml"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\dsfVorbisDecoder.dll"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\dsfVorbisDecoder64.dll"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\EliteDangerous64.exe.watchdog.log"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\EOSSDK-Win64-Shipping.dll"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\GpuWorkTable.xml"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\htom32.dll"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\htom64.dll"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\InstallerInfo.txt"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\nvToolsExt32_1.dll"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\OodleDictionary4.bin"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\portaudio_x64.dll"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\portaudio_x86.dll"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\Update.log"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\VersionInfo.txt"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\vp8decoder.dll"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\vp8decoder64.dll"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\vp9decoder.dll"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\vp9decoder64.dll"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\webmsplit.dll"
call :FILE_REPLACE "Products\elite-dangerous-odyssey-64\webmsplit64.dll"
:: Directories that need to be copied and are not symlinked:
:: "Products\elite-dangerous-64\ControlSchemes"
:: "Products\elite-dangerous-odyssey-64\ControlSchemes"
:: If these directories are symlinked then controls remain empty.
:: Files that need to be copied and are not hardlinked:
:: "Products\elite-dangerous-64\AppConfig.xml"
:: "Products\elite-dangerous-64\GraphicsConfiguration.xml"
:: "Products\elite-dangerous-odyssey-64\AppConfig.xml"
:: "Products\elite-dangerous-odyssey-64\GraphicsConfiguration.xml"
:: :: Files that are re-built but are hardlinked (you may delete them):
:: :: "Products\elite-dangerous-64\GpuWorkTable.xml"
:: :: "Products\elite-dangerous-64\InstallerInfo.txt"
:: :: "Products\elite-dangerous-odyssey-64\GpuWorkTable.xml"
:: :: "Products\elite-dangerous-odyssey-64\InstallerInfo.txt"
::
:: :: Files that could be set per instance but are normally not used or the same
:: :: across instances and therefore hardlinked:
:: :: "Products\elite-dangerous-64\AudioConfiguration.xml"
:: :: "Products\elite-dangerous-odyssey-64\AudioConfiguration.xml"
:: end of the main iteration
set /a ALTINDEX += 1
goto SETUPSTART
:SETUPEND
echo.
echo Looks like we're done.
:END
pause
:: exit the batch but not the shell and set ERRORLEVEL
exit /B %ENDERROR%
:: Here start the definitions of the functions used in the script
:: create a directory unless a directory or file already exists or the original does not exist.
:DIR_CREATE
if not exist "%SOURCEPATH%\%~1" exit /B 0
if not exist "%DESTPATH%\%~1" mkdir "%DESTPATH%\%~1"
exit /B 0
:: create a directory unless a directory or file already exists or the original does not exist.
:: then overwrite the content.
:DIR_REPLACE
:: creating the directory first prevents confusing prompts if the source directory is empty.
if not exist "%SOURCEPATH%\%~1" exit /B 0
if not exist "%DESTPATH%\%~1" mkdir "%DESTPATH%\%~1"
xcopy /E /Y /I /C /Q "%SOURCEPATH%\%~1" "%DESTPATH%\%~1" 1>nul
exit /B 0
:: create a directory symbolic link unless a directory or file (or symlink) already exists
:: or unless the original does not exist.
:: Report an error if it already exists but is not a reparse point (link), as the script
:: does not replpace existing files or directories with symbolic links.
:DIR_SYMLINK
if not exist "%SOURCEPATH%\%~1" exit /B 0
if not exist "%DESTPATH%\%~1" mklink /D "%DESTPATH%\%~1" "%SOURCEPATH%\%~1" && exit /B 0
fsutil reparsepoint query "%DESTPATH%\%~1" >nul || echo ERROR: Path is not a symbolic link "%DESTPATH%\%~1" || exit /B 1
exit /B 0
:: create an individual file unless it already exists or the original does not exist.
:FILE_CREATE
if not exist "%SOURCEPATH%\%~1" exit /B 0
if not exist "%DESTPATH%\%~1" copy /B "%SOURCEPATH%\%~1" "%DESTPATH%\%~1" 1>nul
exit /B 0
:: create or replace an individual file unless the original does not exiist
:FILE_REPLACE
if not exist "%SOURCEPATH%\%~1" exit /B 0
copy /B "%SOURCEPATH%\%~1" "%DESTPATH%\%~1" 1>nul
exit /B 0
:: create a hard link to a file if it does not already exist, unless the original does not exist.
:HARDLINK
if not exist "%SOURCEPATH%\%~1" exit /B 0
if not exist "%DESTPATH%\%~1" mklink /H "%DESTPATH%\%~1" "%SOURCEPATH%\%~1"
exit /B 0
How to get EliteDAlt.bat:
I have attached the script to this post in a zip archive, but in case this does not work here's how to get it from the spoiler tag:
- Copy the whole code text from the spoiler in this post
- Open notepad (Windows start menu, search for notepad)
- Paste the code text into notepad
- Use Menu > Save As... or Ctrl+Shift+S in Notepad
- In the Save As dialog change Save as type from "Text documents (.txt)" to "All Fiies (.*)"
- In the File Name field type EliteDAlt.bat
- I recommend to select encoding UTF-8 (without these pesky BOM), which should be the standard as of 2022.
- Here you may already navigate to the directory where the batch file should be at the end.
- Press the Save button.
How to use EliteDAlt.bat:
- Locate your "Elite Dangerous" installation directory (folder), the one that contains EDLaunch.exe.
- Navigate one directory up
- Once there create an empty directory for each alternate account alongside the original "Elite Dangerous" named with some additional text APPENDED to the original name, like "Elite Dangerous Alt" or "Elite DangerousXplore".
- Copy EliteDAlt.bat into the same directory (alongside "Elite Dangerous" and the alt folders). To make an EliteDAlt.bat file create a new text file there, open it, copy the code from the spoiler, paste it into the text editor (notepad by default) and save the text file
- Make sure neither the launcher nor the game are running
- Right click EliteDAlt.bat from the current location and select "Run as an Administrator" to execute it with elevation.
- This will fill the alt directories with symbolic linked, hard linked and copied files and directories. They currently take up 244Mbyte per alt, compared to the 153Gbyte of the original installation.
- You can now start any account by executing its launcher.
This is what it looks like on my computer:
When a new update or patch arrives then I recommend to launch the original installation first (usually the launcher is enough, but because Odyssey update 13 included a new launcher I had to do the update in Steam), Launch the game, exit both game and launcher and then re-run EliteDAlt.bat from the parent directory.
I keep shortcuts to all launchers and EliteDAlt.bat in a convenient location. Make sure to create the shortcuts in the directory of the original file (right click EDLaunch.exe / EliteDAlt.bat and choose "Create shortcut"), rename them and move them to the destination so the Target and Start in paths are correct. Only for EliteDAlt.bat you should enable the Run as administrator tick in the advanced properties of the shortcut.
Here's a picture with my shortcuts:
Attachments
Last edited: