View Single Post
Old 16th January 2019, 21:26   #7  |  Link
LoRd_MuldeR
Software Developer
 
LoRd_MuldeR's Avatar
 
Join Date: Jun 2005
Location: Last House on Slunk Street
Posts: 13,248
Quote:
Originally Posted by manolito View Post
After all having the necessary redistributables installed is a user responsibility.
Nope. Or, at least, it shouldn't be

If the developer decides to make the application use the "static" version of the run-time library (option /MT), then we get a nice fully self-contained EXE file which does not depend on any run-time library DLLs at all. Couldn't be easier!

And, if the developer decides to make the application use the "DLL-specific" version of the run-time library (option /MD), so that separate run-time library DLLs are needed at run-time, then the following options are available:
  • Package the application with all the required run-time library DLLs, e.g. as a ZIP file or installer, so that we get a nice fully self-contained "bundle" that does not depend on any separately installed VC++ Redistributable at all. And, yes, this is still possible with VS2017 and the Universal CRT. You just need to bundle the UCRT DLLs from the "Redist\ucrt\DLLs" directory of the Windows SDK in addition to the usual Visual C++ "Redist" DLLs.
  • Do not bundle the required run-time library DLLs with the application, but instead provide an installer that contains the specific VC++ Redistributable installer required by that application. When choosing this option, the "main" installer may invoke the embedded VC++ Redistributable installer automatically during the installation process, in "silent" mode, so that the user doesn't even need to notice that the required VC++ Redistributable gets installed.
  • If neither of the previous two options seem appropriate, it should at least be documented very clearly, in the application's README, which specific VC++ Redistributable (including download link) is required for that specific application.

Blindly bloating your machine by installing a zillion of Redistributables, in the hope that one of them will be the "right" one for application XYZ, is not a very good idea. Might do more harm than good. I think I'm having a "Coded Packs" déjà vu

If in doubt, better use Dependency Walker (or Dependencies) to figure out which run-time library DLLs are actually missing...
__________________
Go to https://standforukraine.com/ to find legitimate Ukrainian Charities 🇺🇦✊

Last edited by LoRd_MuldeR; 16th January 2019 at 21:58.
LoRd_MuldeR is offline   Reply With Quote