Question

We have a VC++ 2012 application for native Windows (classic fat app) Also we have a NSIS based installer.

I would like to add the VC110_CRT merge modules to the installer but the merge modules cannot be installed on Windows XP. The error Message is.

This installation package cannot be installed by the Windows Installer service. Your must install a Windows service pack that conatains a newer version of the Windows Installer service.

and yes, Its a fully updated Windows XP (SP 3 + all updates). As far as I understand it, we need at least Windows Vista to install the update.

My Question:

  • Is there a way to convert the Microsoft_VC110_CRT_x86.msm module, so its usable under Windows xp

I know I can use the vs_2012_redist, but it has ~6,5 MB instead of ~0,8 of the merge modul size. and I only need the CRT, because the app uses QT and no MFC/ATL/....

Was it helpful?

Solution

This is an incorrect error message. MSIEXEC is looking at the schema verson in the SummaryInformationStream of the MSM and seeing it's newer then the version of MSI on Windows and giving you this error message.

In truth, merge modules can never be installed because they have no concept of Product or Features. They are merely encapsulated collections of components and related installation metadata. Merge modules are like .LIB files in C/C++ and are statically linked (merged) into an MSI at build time.

NSIS isn't a Windows Installer technology so it can't use merge modules. Instead you should use the redistributable provided by Microsoft and launch the EXE with the correct command line.

You're only other options are to deploy the desired DLL privately (in your application directory), statically link it in your EXE or dump NSIS and create a proper MSI.

Be aware of the security / patching implications of your choice.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top