Windows binary built on 2016r1 for Mac doesn't work

Not sure where to post this, Targets/Windows or Targets/OSX. I have an app that builds successfully for Windows with the OS X ID of 2015r41. When using 2016r1, however, the windows build doesn’t work. It complains about api-ms-crt-runtime-l1-1-0.dll missing from the Computer. Any idea what could be causing this?

Maybe this

Yes starting with 2016r1 you need to install the Windows Universal Runtime alongside your Xojo app. You’ll find a doc about it in the Windows Runtime folder within your Xojo Extras folder.

Maybe an entry in the Release Notes ough to be of some good.

There’s an entire PDF in the documentation devoted to this subject

Am I correct in my assumption that, if I include the Windows Universal Runtime via the provided Inno script, and the target machine already has it, that nothing will happen and the install will continue as expected. Or do I have to determine whether or not the target machine has the DLL’s before the installation process?

The script on the documentation page merely runs the installer for the runtime.
This thread has information on how to do it as you described with Innosetup.

It does not re-install. But checking if it is already installed is faster from within the setup script.

Thanks Tim and Sascha for the clarification.

Has anybody come up with a handy way to check with Xojo code whether or not the Windows Universal Runtime is installed on the current system to alert the user meaningfully instead of crashing with an error message that some dll is missing? I’m deploying a portable application that doesn’t come with an installer that could check if the Universal Runtime needs to be installed.

I would simply just put the universal runtime DLLs in the executable folder in this case. The error dialogs are the doing of the system loader and happen before any code gets ran, Xojo framework or user code.

Or to ask differently, is there a chicken-and-egg problem where the Universal Runtime is needed even for the simplest of apps, such as one that checks if the Universal Runtime is installed?

Hi Roger,

Here is a program that I put together which checks the registry to see if the Redistributable has been installed on windows and lists the ones which have been installed.

Check For Redistributable

But that would have to be a separate executable, and built with a version prior to 2016r1.
In the case of a portable app, I would take Joe’s suggestion.

A good installer can check for dependencies and copy the Universal Runtime only if it is not present.

[quote=259670:@Eugene Dakin]
Here is a program that I put together which checks the registry to see if the Redistributable has been installed on windows and lists the ones which have been installed.[/quote]

Thanks. Might it not be better to check the Windows directories for the actual required .dll files? I am sure there are other non-related redistributables - Access, .net frameworks. Just an idea - maybe I am just being thick as usual.

( Your program found three VC++ redistributables on my machine !)

Peter, you are right that checking for dll files is an option. There is a chance that there could be false-positives by searching for a file, albeit slim. I am sure that if a program were to be made to search for the directories that it would probably work well for almost all cases.

I agree with the suggestions from Tim, Joe, and Michel about checking for dependencies in an installer and including the Dll’s.