/build/static/layout/Breadcrumb_cap_w.png

Install error 1920 about winsxs merge modules

Hi all,

When I try to insltall my msi package I get an error only in vista and 7. "Error 1920. Service ... (...) failed to start. Veryfy that you have sufficent privileges to start system services"
http://img214.imageshack.us/img214/8666/clasetuperror.jpg

I get this error in vista or 7 if I build my setup with C++ 9 CRT Winsxs MSM merge module
http://img808.imageshack.us/img808/3439/vc9.jpg

If I use C and C++ 7 runtime libraries it doesn't problem
http://img97.imageshack.us/img97/1459/vc7ler.jpg
but with this I must build my exe with old versions of Ms Visual Studio.

Does anyone have idea how can I cope with that?

Edit: Image adresses linked

0 Comments   [ + ] Show comments

Answers (11)

Posted by: anonymous_9363 14 years ago
Red Belt
0
My guess would be a missing dependency but I think you're going to have to use ProcMon (or your favoured process/file/registry monitor) to determine what's going on.
Posted by: togikan 14 years ago
Senior Yellow Belt
0
I checked my program's exe with dependency walker and I see some .dll files are missing from Visual C++ 9.0 crt (x86) Winsxs merge module. I guess while setup process it doesn't write to winsxs folder in win 7 and vista.
Posted by: togikan 14 years ago
Senior Yellow Belt
0
and now try to use proc mon, what will be helpful in the million of process?
Posted by: anonymous_9363 14 years ago
Red Belt
0
Right-click each of the processes you want to exclude then select 'Exclude [whatever.exe]'. Alternatively, multi-select the processes using shift+click, or ctrl+click, right-click, select 'Exclude...', then select 'By name'.

Just like it says in the help file... :-)
Posted by: john.pirvu 14 years ago
Senior Yellow Belt
0
Hi,

I don't remember where exactly I read about this, but I think the problem is caused by assemblies from the merge module (the dependencies you mentioned). These assemblies are registered by MsiPublishAssemblies action which comes after StartServices. A solution is to modify the StartServices action sequence to run after MsiPublishAssemblies.

Regards,
John
Posted by: togikan 14 years ago
Senior Yellow Belt
0
Hi again,

@VBScab

I use process monitor and check nearly 60.000 events :) with new extra informations, the situation is like this;

When I check my program's exe with Dependency Walker, I see that 2 dlls (MSVCP90.DLL and MSVCR90.DLL) are missing as in this photo.
http://img202.imageshack.us/img202/6094/cladependency.png

With Process Monitor I searched these dlls and only find entries like
Date & Time: 15.09.2010 13:39:12
Event Class: Registry
Operation: RegEnumValue
Result: SUCCESS
Path: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\27BE807B28AA7BE3B80B8D54AB539CD3
TID: 4828
Duration: 0.0000053
Index: 0
Name: FA4EDAFCFC0C40A47A674731811F56F8
Type: REG_SZ
Length: 258
Data: >msvcr90.dll\Microsoft.VC90.CRT,type="win32",version="9.0.21022.8",publicKeyToken="1fc8b3b9a1e18e3b",processorArchitecture="x86"


http://img825.imageshack.us/img825/4884/event1h.png

Date & Time: 15.09.2010 13:39:12
Event Class: Registry
Operation: RegQueryValue
Result: SUCCESS
Path: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\27BE807B28AA7BE3B80B8D54AB539CD3\FA4EDAFCFC0C40A47A674731811F56F8
TID: 4828
Duration: 0.0000049
Type: REG_SZ
Length: 258
Data: >msvcr90.dll\Microsoft.VC90.CRT,type="win32",version="9.0.21022.8",publicKeyToken="1fc8b3b9a1e18e3b",processorArchitecture="x86"


http://img409.imageshack.us/img409/6470/event2t.png


Date & Time: 15.09.2010 13:39:12
Event Class: Registry
Operation: RegSetValue
Result: SUCCESS
Path: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\27BE807B28AA7BE3B80B8D54AB539CD3\F5086904C7024084EA0A96FED0E58E6A
TID: 4828
Duration: 0.0004927
Type: REG_SZ
Length: 258
Data: >msvcr90.dll\Microsoft.VC90.CRT,version="9.0.21022.8",publicKeyToken="1fc8b3b9a1e18e3b",processorArchitecture="x86",type="win32"


http://img508.imageshack.us/img508/7658/event3.png


@ john.pirvu

Hope that my problem is about that but in my install shield sequence, MsiPublishAssemblies is before StartServices. It doesn't like the couse of my problem :(
http://img52.imageshack.us/img52/8456/startservicesseq.jpg
Posted by: anonymous_9363 14 years ago
Red Belt
0
One way or another, the machine can't find those DLLs.

Have you tried installing the runtime before running your install?
Posted by: togikan 14 years ago
Senior Yellow Belt
0
Yes I tried, I have those dlls in my computer in different folders in winsxs folder but the situation is my setup doesn't install those one and can't start services I guess. Is it true?
Posted by: anonymous_9363 14 years ago
Red Belt
0
No, I meant have you installed them using the EXE as supplied by MS to see if you get the same problem.

Having the DLLs in various folders under the WinSxS folder is meaningless without the accompanying registry entry to tell Windows where they are. That procedure is way too complex to explain here which is why it's left to the side-by-side installation mechanism.
Posted by: jamsek19 14 years ago
Orange Senior Belt
0
Hello.
I also get that error. I also found that service was properly installed therefore I implemented to skip StartService action. After installation I was able to start service manually. So the problem was that VC++ dlls was not installed yet.
By searching on the web I found in a page http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg17369.html one explanation. It is from Phil Wilson (the author of book about Windows Installer) and he says that problem is just on Windows Vista and newer systems because installing VC++ runtime by merge modules actually happened at Commit phase of installation which happened much later than action StartService. Therefore the service which depends on VC++ runtime cannot starts at that time because dlls are not installed yet. This confirms my problem - after installation the service can be started.

At the moment I have no idea how to properly solve this problem. I see these possibilities and no one of them is clear to implement
  1. implement own start service action: this is more or less bad idea because you have to have in mind rollback actions of start/stop service during upgrades, uninstall etc.
  2. install VC++ runtime as regular install files in INSTALLDIR folder which is bad because these files are not per computer but per application,
  3. static link VC++ dlls into service: the service binary is bigger, loading take more time, etc. after all we loose dynamic linking libraries which we want to.
Does someone solve this problem more elegantly?

Best regards
Andreo
Posted by: anonymous_9363 14 years ago
Red Belt
0
The simplest route is to use your deployment mechanism to deploy the dependencies (in this case, the VCRTs) first.
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
 
This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ