Runtime SDK for .NET 100.15 (WPF) - Visual C++ redistributable requirements

802
2
Jump to solution
08-23-2022 11:53 AM
DavidSchuster
Occasional Contributor

Hello!

I have a question about one of the prerequisites for the 100.15 version for a WPF app:  System requirements for 100.15 | ArcGIS Runtime API for .NET | ArcGIS Developers

Under "Requirements for app deployment" > "WPF requirements" it says "Deployment of applications built with ArcGIS Runtime SDK for .NET (WPF) requires:  Microsoft Visual C++ 2015-2022 Redistributable version 14.32.31326 minimum".

However when I install and run my application on a computer without these libraries, it still seems to function just fine.  We're not bundling these libraries with our app, so I'm curious how it still works.  

Our user base is guaranteed to have the 14.28.29914 versions of the redistributables installed because it is already deployed for another application.  Will this version be sufficient? 

Oddly, even if I uninstall the 14.28.29914 versions and restart my computer, our app still runs.  What am I missing?

Thank you!

David

0 Kudos
1 Solution

Accepted Solutions
MichaelBranscomb
Esri Frequent Contributor

Hi,

There are two parts to the VC++ redistributable, one part Microsoft considers effectively part of the OS and it's installed with Windows and serviced through Windows update - that's the Universal CRT or UCRT. The second part is the Microsoft Visual C++ 2015-2022 Redistributable or vcruntime and it either needs to be installed or included with your app. Often you'll find it is already installed on a machine where other installed applications also depend on it and they have installed it as a prerequisite. That's still the recommended option because again it can be serviced by Windows or corporate updates. The other option for deploying it is an app-local deployment where you bundle the VC++ runtime dlls with your app. Traditionally many developers have favored this approach because it isolates the app from the impact of software updates to centrally installed components. We try not to lock developers into either approach and therefore list it as a prerequisite in the system requirements.

You can find more info about the centralized vs app-local approaches here: 

Deployment in Visual C++ | Microsoft Docs

Determine which DLLs to redistribute | Microsoft Docs

Universal CRT deployment | Microsoft Docs

To determine if a deployment machine already has the vcruntime installed you can check installed products e.g.

MichaelBranscomb_0-1661284352421.png

I only have 14.28.29914... and ArcGIS Runtime works fine, but in the System Requirements topic we list the version we compile with/against (14.32.31326). 

 

If you choose the app-local approach then you'll need to ensure the following vcruntime dlls are present on the system (either included with your deployment or you own installer could include the downloadable x86/x64 installers) - they should be included in the same folder as the ArcGIS Runtime architecture-specific runtimecore.dll:

  • vcruntime140.dll
  • vcruntime140_1.dll
  • msvcp140.dll
  • msvcp140_1.dll
  • msvcp140_2.dll
  • msvcp140_codecvt_ids.dll

 

It seems like we should review our doc in this regard and perhaps we could provide greater clarity - I'll open an issue to assess. 

 

Thanks

View solution in original post

2 Replies
MichaelBranscomb
Esri Frequent Contributor

Hi,

There are two parts to the VC++ redistributable, one part Microsoft considers effectively part of the OS and it's installed with Windows and serviced through Windows update - that's the Universal CRT or UCRT. The second part is the Microsoft Visual C++ 2015-2022 Redistributable or vcruntime and it either needs to be installed or included with your app. Often you'll find it is already installed on a machine where other installed applications also depend on it and they have installed it as a prerequisite. That's still the recommended option because again it can be serviced by Windows or corporate updates. The other option for deploying it is an app-local deployment where you bundle the VC++ runtime dlls with your app. Traditionally many developers have favored this approach because it isolates the app from the impact of software updates to centrally installed components. We try not to lock developers into either approach and therefore list it as a prerequisite in the system requirements.

You can find more info about the centralized vs app-local approaches here: 

Deployment in Visual C++ | Microsoft Docs

Determine which DLLs to redistribute | Microsoft Docs

Universal CRT deployment | Microsoft Docs

To determine if a deployment machine already has the vcruntime installed you can check installed products e.g.

MichaelBranscomb_0-1661284352421.png

I only have 14.28.29914... and ArcGIS Runtime works fine, but in the System Requirements topic we list the version we compile with/against (14.32.31326). 

 

If you choose the app-local approach then you'll need to ensure the following vcruntime dlls are present on the system (either included with your deployment or you own installer could include the downloadable x86/x64 installers) - they should be included in the same folder as the ArcGIS Runtime architecture-specific runtimecore.dll:

  • vcruntime140.dll
  • vcruntime140_1.dll
  • msvcp140.dll
  • msvcp140_1.dll
  • msvcp140_2.dll
  • msvcp140_codecvt_ids.dll

 

It seems like we should review our doc in this regard and perhaps we could provide greater clarity - I'll open an issue to assess. 

 

Thanks

DavidSchuster
Occasional Contributor

Thanks for the very thorough explanation Michael!

0 Kudos