Can Visual C++ 2017 Redistributable package support the applications that use VC2015?
Asked Answered
S

1

5

If i install just Visual C++ 2017 Redistributable on my machine, can it support applications that was written for 2015

in other words, if I uninstall Visual C++ 2015 Redistributable and install Visual C++ 2017 Redistributable, will all the applications work without any errors?

Scythe answered 30/8, 2017 at 18:30 Comment(3)
Yes, they claim it is binary compatible. blogs.msdn.microsoft.com/vcblog/2017/03/07/…Medicaid
@Medicaid : Where in the article is it specifically mentioned about Redistributable package? The article talks about toolsetScythe
The 3 odd paragraphs under the heading VC Runtime in MSVC 2017 is binary compatible with 2015.Medicaid
L
2

No they won't work

The redistributable package is a .exe, which installs the required DLLs

msvcrtXXXX.dll

Where XXXX changes per build (VS2017, VS2015,...)

It is also not reference counted, which means no matter how many people install it, one uninstall rips out the files.

UPDATE

The Visual Studio 2017 does not change the version number

VS2017  msvcr140.dll
VS2015  msvcr140.dll

VS2013  msvcr120.dll
VS2012  msvcr110.dll
VS2010  msvcr100.dll
VS2008  msvcr90.dll

Thus Microsoft believe that the VS 2015 and VS 2017 redistributable packages are compatible.

Unfortunately, looking for downloads of VS2015 and VS2017, they are both available, so there may be subtle differences.

If the 2015 does not install, it will be because it thinks it is less good than the already installed 2017. However I have failed to find strong documentation that this is what Microsoft expects.

Lilybelle answered 30/8, 2017 at 18:47 Comment(7)
So, how do i install VC++2015Redist on a machine that has VC++2017Redist? When i try to do that, it FAILSScythe
@ManjunathBabu What is the error you are getting? There shouldn't be any issue installing an earlier redistributable.Protuberant
They are binary compatible actually... 2015 and 2017. You need at least the version of the runtime you compiled against (e.g. VC++2015Redist Update 3 if you are still working with VS2015), but a newer runtime with a compatible interface will also work perfectly fine. 2013 runtime was obviously not compatible, there have been interface changes.Xanthe
@Aczire : on a machine that has VC++2017Redist, if i install VC++2015Redist, the error log says "Error 0x80070666: Cannot install a product when a newer version is installed"Scythe
@ManjunathBabu That is because "VC++2017Redist" is an in-place upgrade of "VC++2015Redist", on a binary level. In fact you need only "VC++2017Redist", not "VC++2015Redist".Protuberant
@Aczire: Where is it mentioned officially? Can applications built using VC++2015Redist run on a clean machine with only VC++2017Redist installed?Scythe
The 2 redistributable packages install files with the same name (e.g. msvcr140.dll), given that they have previously renamed the files for each release, I would assume they are meant to be compatible. However, there is no strong statement from MS to use the VS2017 package as it is bug-fixed that I could findLilybelle

© 2022 - 2024 — McMap. All rights reserved.