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

Comments

Please log in to comment

Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.

Answers

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.
Answered 09/01/2010 by: VBScab
Red Belt

Please log in to comment
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.
Answered 09/02/2010 by: togikan
Senior Yellow Belt

Please log in to comment
0
and now try to use proc mon, what will be helpful in the million of process?
Answered 09/05/2010 by: togikan
Senior Yellow Belt

Please log in to comment
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... :-)
Answered 09/05/2010 by: VBScab
Red Belt

Please log in to comment
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
Answered 09/10/2010 by: john.pirvu
Senior Yellow Belt

Please log in to comment
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
Answered 09/16/2010 by: togikan
Senior Yellow Belt

Please log in to comment
0
One way or another, the machine can't find those DLLs.

Have you tried installing the runtime before running your install?
Answered 09/16/2010 by: VBScab
Red Belt

Please log in to comment
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?
Answered 09/16/2010 by: togikan
Senior Yellow Belt

Please log in to comment
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.
Answered 09/16/2010 by: VBScab
Red Belt

Please log in to comment
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
Answered 10/26/2010 by: jamsek19
Orange Senior Belt

Please log in to comment
0
The simplest route is to use your deployment mechanism to deploy the dependencies (in this case, the VCRTs) first.
Answered 10/27/2010 by: VBScab
Red Belt

Please log in to comment
Answer this question or Comment on this question for clarity