cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
loralynne
Level 6

Installation of WinSxS Assemblies

I have a Basic MSI project that installs a service that requires the VC++ libraries, so I included the Visual C++ 9.0 CRT (x86) WinSxS merge module and its corresponding policy merge module (version 9.0.30729.1). However, when I run my installer, I get a 1920 error that my service failed to start. Before I clicked OK to quit and rollback the installation, I checked to see if the VC++ libraries/manifests/policies got installed. I found them in C:\Windows\winsxs\InstallTemp. So it seems that the service is failing to start because they're not in their final location yet (e.g., C:\Windows\winsxs\Manifests).

I tried moving the StartServices action to after the MsiPublishAssemblies action, but that didn't help. Running vcredist_x86.exe before running my installer fixes the problem, but that's just a workaround for now.

This is happening on all flavors of Win Server 2008, but not on Vista or Server 2003. This happens on both physical and virtual machines. The strange thing is that I see this happening on one virtual machine, but not on another. Neither of the VMs have the VC libs pre-installed or anything, and the VMs are pretty much identical, but I'm running them on two different machines.

Someone please help me! Any help would be greatly appreciated.

Thanks,
loralynne
Labels (1)
0 Kudos
(5) Replies
MichaelU
Level 12 Flexeran
Level 12 Flexeran

Aaron Stebner described a related problem with the VC++ 8 merge modules (http://blogs.msdn.com/astebner/archive/2007/05/20/2760317.aspx), and I believe that's the core problem you're encountering here (VC++ 9 is not significantly different in this regard). You will have to remove the dependency, satisfy it earlier, or not use the proper MSI service installation support. None of these are great options, but we tend towards installing the merge modules or redist exe as part of a prerequisite, implementing option 2.
0 Kudos
loralynne
Level 6

I'm not sure if I understand you correctly. Are you saying that I should include vcredist as a setup prerequisite instead of including the merge modules? I read here http://blogs.msdn.com/dsvc/archive/2008/08/07/part-1-troubleshooting-vc-side-by-side-problems.aspx that merge modules are recommended over redistributable packages.

(Btw, my installer used to install a service that required th VC++ 8 libraries, and using the merge modules worked fine.)
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

(Link fixed.)

Yes, I'm saying that if you don't install the redist as a separate operation (effectively as a prerequisite), there is an ordering problem. (I'm not certain how it would have worked with VC++ 8; I could be mistaken, or the results may be based on flawed tests.)

If you want to also follow that team's recommendation, you can create an additional .msi which includes the merge module, and install that .msi as the prerequisite. I'm not going to debate their recommendation, but do consider that it seems to trade one set of problems for another set.
0 Kudos
loralynne
Level 6

Thanks for your help, Michael. I'll do that.
0 Kudos
loralynne
Level 6

0 Kudos