Currently if a user installs ReShade and then tries to install SpecialK, the ReShade DLLs from the standalone install will be left over. Likewise, if a user installs ReShade and SpecialK together with ReShade as a SpecialK plugin, and then either disables this option OR disables SpecialK entirely, the previous ReShade DLLs will not get cleaned up.
This gets messy, pollutes game files, and gets in the way of some duplicate DLL detection logic.
This PR adds logic to do the following:
If ReShade is installed and a user tries to install SpecialK (with the default ReShade as SpecialK plugin behaviour enabled), remove any existing standalone ReShade files before installing ReShade for SpecialK as a plugin
If SpecialK and ReShade are installed, and if the default ReShade as SpecialK Plugin behaviour is enabled, when SpecialK is disabled, remove SpecialK ReShade files and install ReShade as normal
If SpecialK is installed, then ReShade is installed as a plugin, and then the plugin behaviour is disabled, the old ReShade DLLs are removed so only the standalone ReShade DLLs exist
If SpecialK is installed with a standalone ReShade install (not as SpecialK plugin), when the user enables the plugin behaviour, the standalone DLLs are removed so only the plugin ReShade DLLs exist
If SpecialK is installed and ReShade is installed as a plugin, when SpecialK is disabled, the ReShade plugin install is replaced with a regular standalone ReShade install
This cleans up the game files a lot and makes for a cleaner experience.
Future Work
I am not too sure how the INI file cleanup should work, for now it's a toggle in the ReShade remove functions. For now they're left as-is, but in future, we may need to rename them somehow, so configuration can be preserved. A user can do this manually for now, though.
I tested this with HoloCure and NieR:Automata, so I am confident it works. It also won't get in the way of the DLL duplicate checking logic. This is pretty much ready for merging after some quick code review!
The last major piece of work required for #894.
Overview
Currently if a user installs ReShade and then tries to install SpecialK, the ReShade DLLs from the standalone install will be left over. Likewise, if a user installs ReShade and SpecialK together with ReShade as a SpecialK plugin, and then either disables this option OR disables SpecialK entirely, the previous ReShade DLLs will not get cleaned up.
This gets messy, pollutes game files, and gets in the way of some duplicate DLL detection logic.
This PR adds logic to do the following:
This cleans up the game files a lot and makes for a cleaner experience.
Future Work
I am not too sure how the INI file cleanup should work, for now it's a toggle in the ReShade remove functions. For now they're left as-is, but in future, we may need to rename them somehow, so configuration can be preserved. A user can do this manually for now, though.
I tested this with HoloCure and NieR:Automata, so I am confident it works. It also won't get in the way of the DLL duplicate checking logic. This is pretty much ready for merging after some quick code review!