In some situation it might be wanted to control where config files are stored. By adding a special file named CustomConfigPaths.xml this is possible.
From this file you can control where the Config / Log / UserData location are, You can also redirect individual config file to other files located in other places and you can also add additional script folder that should be used.
This file need to be stored in the App Config folder. NOT the user config folder. (For portable version these are the same)
- Portable version - It is the Config subfolder where MultiCommander.exe is located
- Installed (For current user only) - C:\Users\%USERNAME%\AppData\Local\MultiCommander (X64)\Config\CustomConfigPaths.xml
- Installed (For all user) - C:\Program Files\MultiCommander (X64)\Config\CustomConfigPaths.xml
If installed for all user this is under the program files folder as you see above. So it will only be writeable for user with admin permissions. So for IT depertments that want to control this installed version is recommeded.
It is also possible to just change permissions for the CustomConfigPaths.xml so it is only readable, MultiCommander.exe only reads that file.
The config folders that are storing the user config files are not the same as the paths above. (With the exception of Portable version where user config overwriting the "default" config files).
For installed version user configuration is stored in C:\Users\%USERNAME%\AppData\Roaming\MultiCommander\Config\.
The folder under C:\Users\%USERNAME%\AppData\Roaming\MultiCommander\ is the folders that can be relocated to another location.
The config file is a text file with a .xml file extension. A xml need to be written in special ways else the program will fail to open it.
You can verify the file so it is readable by programs by drag and drop the file to a webbrowser like chrome, edge and it will show the content and report if there are any xml error that will cause issue when the file is read.
Create a file named CustomConfigPaths.xml in the location noted above.
Make sure you save the file using UTF-8 encoding. And then copy and paste the code below to it
<?xml version="1.0" encoding="UTF-8"?> <CustomConfigPaths> </CustomConfigPaths>
This is the base of the file. Now you need to add what to relocate and such and every thing must be added before the "</CustomConfigPaths>" tags.. so "</CustomConfigPaths>" should always the the last text in the file.
Redirect Base Config folder / Log folder and UserData folder
The base folder for Config/Log/UserData can be relocated using the ConfigPath,LogPath and UserDataPath tags and you then insert the new path as the value in the Path element. (See the example).The path you add can be a full path or a relative path.
If a relative path is used in is based from the default user config path. It is also possible to include environment variables into the path such as %APPDATA% , %HOMEPATH% and so on.
Set this if you want to change the location of where MultiCommander should read / write all configuraton to.
Set this if you want to change the location of where MultiCommander should write all log to.
Set this if you want to change the location where MultiCommander store userdata.
User data is user specific data like profiles for MultiRename, FTP bookmarks and such.
<ConfigPath Path="C:\MC\Config"/> <LogPath Path="C:\MC\Log"/> <UserDataPath Path="C:\MC\UserData"/>
Redirect individual config file
It is also possible to redirect individual config files. If redirect of individual config files are done the redirect of ConfigPath is not required. But if ConfigPath is relocated, Then relative path for the redirect are assumed from that path.
Redirect of config files has two values that need to be set File and Redirected, File is the relative path of the file to redirect. relative to the config folder. So if you want to redirect UserMenu.xml no path before it is required.
If you want to redirect a config file from an extension the full path from the config folder is needed.
Redirected is full path of the file that is should read instead. If this is a relative path it is relative to the config folder.
<ConfigFileRedirect> <ConfigFile File="UserMenu.xml" Redirected="Menus\BasicMenu.xml" /> <ConfigFile File="Extensions\MultiFileViewer\MultiFileViewer.xml" Redirected="MultiFileViewer.xml" /> </ConfigFileRedirect>
Additional Script folders
When MultiCommander starts it reads script from the config/Script folder. It is possible in this file add additional folder script also should be read from.
The "Name" value is the name that the script will be added under when the user look in the User Defined Commands window.
"Path" is the folder that should be scanned for script
If "Recursive" is set to 1 then it will also scan all subfolders
<AdditionalScriptFolders> <ScriptFolder Name="MyScripts" Path="..\MCScript" Recursive="1" /> </AdditionalScriptFolders>
Example of a complete file
Example of a complete CustomConfigPaths.xml file containing everything. You can use this as a template to modify and remove the parts that you do not need
<?xml version="1.0" encoding="UTF-8"?> <CustomConfigPaths> <ConfigPath Path="C:\MC\Config"/> <LogPath Path="C:\MC\Log"/> <UserDataPath Path="C:\MC\UserData"/> <ConfigFileRedirect> <ConfigFile File="UserMenu.xml" Redirected="Menus\BasicMenu.xml" /> <ConfigFile File="Extensions\MultiFileViewer\MultiFileViewer.xml" Redirected="MultiFileViewer.xml" /> </ConfigFileRedirect> <AdditionalScriptFolders> <ScriptFolder Name="MyScripts" Path="..\MCScript" Recursive="1" /> </AdditionalScriptFolders> </CustomConfigPaths>