I have developed a 32-bit C++ application using Visual Studio 2015 (on Windows 10). I want to deploy it onto machines running Windows 7 and later.
I put together a WiX installer and included the VC++ redistributable merge module as described here. The merge module I included was C:\Program Files (x86)\Common Files\Merge Modules\Microsoft_VC140_CRT_x86.msm
.
This installer appears to work fine but on Windows 7 the installed program will not run, complaining about missing api-ms-win-crt-runtime-l1-1-0.dll
.
From searching I suspect that there may be extra files in the redistributable package vc_redist.x86.exe
from here, but the WiX docs tell me to use an msm rather than an exe.
It's also possible that the merge module failed to install. I didn't see any errors but I haven't re-run it with logs enabled to check that possibility.
Another option may be to use burn
but I am not familiar with this tool; I will go that route if it's the correct one but I'd prefer to stick with MSI if possible.
We ran into the trouble that the MSI package failed to install the redistributable with
MSI Error 1618: 'Another installation is already in progress' during installation/uninstallation.
We installed the 2015 redistributable with WIX by using a Bootstraper. For example:It's worth noting that it is now possible to distribute the Universal C Runtime DLLs with your application. The MSDN blog post describes the steps:
C:\Program Files (x86)\Windows Kits\10\Redist\ucrt
and find the DLLs for the platform you are targetingThey are not big. About 2 megabytes in total.
I ended up using this technique because:
I cannot speak to whether it would work on all computers, but it works on the ones I have tested.
The VC++ runtime redistributables got more complicated in Visual Studio 2015. See the VC team blog post about the universal CRT. Basically, the merge module is insufficient: