0

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/....

nobs
  • 708
  • 6
  • 25

1 Answers1

-1

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.

Christopher Painter
  • 54,556
  • 6
  • 63
  • 100
  • It is possible to install a MSM file directly, just call "MSIEXEC /i module.msm" on the commandline and it work fine under win7/server 2008 but the same command don't work on windows XP I also created a MSI from the module (yes a REAL MSI file) but I get the same error, but this probably because I made some mistake during the creation of the msi... – nobs Sep 27 '13 at 10:57
  • Nobs, I've been writing installers for a career for 17 years and using Windows Installer for the last 10 years. I am the #1 contributor on this tag, have over 5K posts on InstallShield forums, have hundreds of blog topics on installers. I assure you that it is absurd to state that an MSM file can be installed. You can take an MSI and rename it to MSM but that wouldn't be an MSM. Merge modules are partial windows installer databases like .LIB in C/C++. They have no concept of product or feature and it is impossible to install them without merging them into some parent MSI first. – Christopher Painter Sep 27 '13 at 11:25
  • Hi I didn't renamed the file i used the msm2msi tool http://www.ethalone.com/articles/61-using-windows-installer-merge-modules-in-ghost-installer-studio.html – nobs Sep 27 '13 at 11:42
  • Sorry to split in two comments I used the tool msm2msi. If I use it with the C80_CRT_x86.msm file I can use the resulting installer (and it also installs the relevant files). If I use the VC110_CRT_x86.msm I get the error mentioned above.. So somewhere there must be a "minimum Version" Value Where and Why? and how can I bypass this. Because the files ARE available for Windows XP (the vc_redist for 2012 proves it) – nobs Sep 27 '13 at 11:57
  • I just tried another MSI creator.. no it works (Advanced Installer) It looks like the msm2msi is "buggy" Looks like the only decent way is to stay with the vc_redist. Investing time in learning a new installer just isn't worth the effort (because vc_redist works :-) ) – nobs Sep 27 '13 at 12:09
  • 1
    Using a tool to create an MSI to be a container for an MSM and installing it is not the same as installing the MSM. It's trivial to do this with other tools as well but the security implications remain. It's best to use the official vs_redist because Microsoft knows about it and they can issue security fixes for it. – Christopher Painter Sep 27 '13 at 12:42