4

Best practices from Microsoft dictate that we link dynamically to the VC++ runtime for security reasons, and it sure would be nice if our application automatically picked up hotfixes without requiring a separate application update from our side.

However, over the past couple of years, I've been making installers for the Evolve client. Our single biggest issue with installing the client has been caused by failed vcredist installations. The biggest error codes being:

  • 1612: The installation source for this product is not available. Verify that the source exists and that you can access it.

  • 1638: Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel.

We've also run in to cases where some third-party application had manually installed the 32-bit version of msvcr100.dll in System32 on a 64-bit version of Windows, obviously causing all applications on the system relying on this to fail.

Now, my question is this: If a developer wants to follow Microsoft's guidelines for the good of the land, how are we to succeed if our products can't reliably be installed? I'm at a crossroads right now where I only see two options going forward:

  1. Link all my binaries statically to the runtime and take the hit on binary size and the security implications associated with it.

  2. Manually distribute the VC++ runtime DLLs and dump them in my application's folder although I don't even know if I'm allowed to do that.

What is everybody else doing out there?

dreijer
  • 654
  • 8
  • 22
  • For VS 2010 or later, you can use the application local solution. For VS 2005/2008, this was not an option. The preferred method is to launch the VCREDIST*.EXE with admin rights at install time. Note that you may be hitting a bug that was specifically in the VS 2010 RTM version of the VCREDIST*.EXE. See [KB2728613](http://support.microsoft.com/kb/2728613) and [KB2717426](http://support.microsoft.com/kb/2717426). – Chuck Walbourn Nov 15 '14 at 07:37
  • Note that if you have a 3rd party application install the 32-bit version of the DLL into the System32 directory of a 64-bit OS, that installer is basically broken and is not compatible with the 64-bit OS. – Chuck Walbourn Nov 15 '14 at 07:38

0 Answers0