UnofficialCrusaderPatch / UCP3-GUI

Dev work on the UCP3 gui
GNU Affero General Public License v3.0
0 stars 0 forks source link

[QOL] Add check if C++ redistributable is installed #223

Open gynt opened 2 weeks ago

gynt commented 2 weeks ago

As I experienced yesterday, users can be faced with a crash upon game start if UCP is framework is activated but https://aka.ms/vs/17/release/vc_redist.x86.exe is not installed. I found a source on how to check if this is installed: https://stackoverflow.com/questions/46178559/how-to-detect-if-visual-c-2017-redistributable-is-installed

Rust needs to check this: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x86 and if a 32-bit OS this HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x86 to see if a key named "Installed" has REG_DWORD data 1.

Preferably this is checked before the framework is installed using the install framework button.

Or even better, the GUI installer should include this requirement... but coding that might be a few magnitudes more difficult...

TheRedDaemon commented 2 weeks ago

Seems I kinda showed my lack of knowledge. Would have never guessed that the MSVC standard library is actually a dynamically linked dependency. The lack of error is confussing, though. @gynt Can you check if wuch errors are devoured by the way the DLLs are loaded? Including the installer depends on where you want it. As part of the framework installation would already be a lot of work, but as part of the GUI installer would be a LOT of work...

gynt commented 2 weeks ago

I wouldn't recommend including the installer, just a Modal box if the GUI is running on Windows telling the user they need to install it and then provide a link to do it in that modal box. That would be enough I think.

The game simply crashes without producing any logs whatsoever, so it is a really low level issue, so I can't really test out the inner workings of the error. I actually hypothesize that they might have only installed x64 and not the x86 one?