MSVCP140.dll and VCRUNTIME140.dll

Having switched from using WebOSMaps to FNCMaps in my application, these DLLs are now required.

A brand new, latest Windows 10 PC installation is reporting that these two files are missing. I do see variants of the files in c:\Windows\SysWOW64. Typically these variants have some sort of suffix to the filename, like "_clr0400", or maybe "120" instead of "140" in the file name.

I understand that these two DLLs are part of Visual C++ Redistributable files, and I could possibly fix the problem by installing these from Microsoft, but this seems wrong (and difficult for remote users)

Googling the issue show that these redistributables are a constant source of problems. Is there anything that TMS can do on their side to fix this?

Hi,

On a clean Windows, you should copy both DLLs (WebView2Loader_x86.dll & WebView2Loader_x64.dll) to both System32 & SysWow64 folders and then install the Evergreen runtime from this page: Webview2 - Microsoft Edge Developer

This is the minimum requirement. There is unfortunately little that we can do to make sure all the requirements are installed prior to installing the above. I assume that the Evergreen runtime installer should install all necessary requirements.

You mention the WebView2Loader DLLs in point (2), on page 3 of the "TMS FNC WebBrowser Developers Guide" (April 2021).

Will you update the document to include your above comments about the additional installation of the Evergreen runtime?

Hi,

We will update the documentation. You can also find instructions here:

https://www.tmssoftware.com/site/edgechromium.asp

Thanks for the help.

In the tmssoftware link that you gave, above, the Installation / Edge WebView 2 section states: "Alternatively, when distributing your application, there are a few ways you can ensure the WebView2 Runtime is on client machines."

That seems to imply that one can do EITHER the installation of WebView2Loader_x86.dll and WebView2Loader_x64.dll into the sys folders, OR use the WebView2 Runtimes.

You should always copy both DLLs regardless of the method. The first method copies the stable version whereas the second version uses the runtime. The first method requires that all necessary files and libraries are present on the machine, which might be the reason why you are getting the issues with missing MSVCP140.dll & VCRUNTIME140.dll. The second method is more reliable for distributing your application and making sure there is an embedded browser available for your application to work with. It might be possible that the stable version of Edge is not functioning properly, and thus the first method which only requires to deploy the DLLs has a chance of failing if the machine on which it is installed has missing files. So in summary:

First method: copy the DLLs, run the application (the application will copy the stable version installed under program files)
Second (alternative) method: copy the DLLs, install the runtime, run the application (the application will automatically pick up the runtime)

In the future, Microsoft will push out the runtime through Windows updates, which will then only require to distribute and install the DLLs alongside your application. It's unclear when that will be, so for now, you can use one of the 2 methods.

Hi,

I've been looking at the customers' WebView2 dll and runtime requirements for my app's installation program. I uninstalled the WebView2 runtime and restarted my PC; the runtime had gone as expected. I expected that my units using the FNC Google Maps would stop working, but they displayed the Google maps, Markers and Time Zone info as normal. The WebView2Loader_x86.dll and WebView2Loader_x64.dll are installed in my C:\Windows\SysWOW64 folder and, if I remove WebView2Loader_x86.dll, the app's FNC mapping features stop working as expected. The question is: why do I need the WebView2 runtime? The Edge version installed in 91.0.864.48 on Windows 10 Version 21H1 for x64-based Systems (KB5004476). I presume this means that the runtime is now included in the latest W10 updates as you said would happen and, hence, we don't now need to install it separately on up-to-date W10 systems?

Hi,

The implementation is as follows:

  1. Checks for stable edge chromium installation (under program files), if found, copy it to a temp directory and use this installation for browser based FNC components.
  2. If 1) fails, automatically use the fallback and target the runtime (if installed).

There are currently no signs of Microsoft pushing out the runtime via Windows updates, so in your case, it uses the first implementation. You can check this by opening the Windows temp folder and verify if there is a Microsoft Edge Chromium folder. If there is, then when removing it, you will notice a significant delay the first time the application is loaded. The folder should then be present again in the temp folder. If the temp folder is empty, then it uses the runtime.

Thanks Pieter. Yes, my implementation uses the 1st one as you say. To summarise then: the implementation will work without the runtime but there is a performance hit in doing so. So there is a benefit in ensuring the runtime is installed in the app's installation program - which I have done.

That is correct. The second approach (runtime) is preferable over the first approach, but requires additional deployments to your or the end user environment.

Ok, that is done easily enough - the runtime installation that is - by running:

MicrosoftEdgeWebview2Setup.exe

in the installation program. However, do we need to install files:

WebView2Loader_x86.dll
WebView2Loader_x64.dll

or are they provided in W10 updates? Also, does this all work on W7?

You still need to distribute the DLLs as well yes (DLLs + runtime). We have tested on Windows 10, not on Windows 7. Microsoft stating that the browser should work on Windows 7 as well.

Ok, thanks Pieter.

Everything seems to work on W7 too.

1 Like