PDA

View Full Version : InstallServices not installing all services.



Kelter
09-21-2010, 01:45 PM
I have two merge module projects and a sample installation. merge module A installs one service, and merge module B installs another service and also starts and stops the service on install/uninstall.

everything in the serviceinstall and servicecontrol tables in both of the merge modules look good, but when the consuming installer runs, it never even tries to install ServiceB, although it does try to start this service (which was not installed.)

i opened the built .msi file, and both entries have been properly merged into the ServiceInstall table, yet the ServiceInstall action doesn't do ANYTHING with the one of the entries!!!

So ServiceA and ServiceB are both included in the ServiceInstall table, and the components with which both services are associated are both being installed. It does install ServiceA, but doesn't install ServiceB or even mention it in the log.

Why might this be the case?
Any ideas?

Kelter
09-23-2010, 03:02 PM
bumping this...

anybody have an idea?

RobertDickau
09-24-2010, 05:12 PM
Does a new test project with only the Service B module attached behave any differently? No alarms with MSM or MSI validation?

Kelter
09-27-2010, 08:50 AM
Robert,

Thanks for your reply! There are a couple validation errors:


ISDEV : error ISICE11: Exe ServiceInQuestion.exe in component ServiceInQuestion.exe.6689DF02_DE5F_4A95_9F7A_EE3BBBBC50C8 lacks a requiredExecutionLevel uiAccess setting in its manifest File File ServiceInQuestion.exe.6689DF02_DE5F_4A95_9F7A_EE3BBBBC50C8
ISDEV : error ISICE11: Exe ServiceInQuestion.exe in component ServiceInQuestion.exe.6689DF02_DE5F_4A95_9F7A_EE3BBBBC50C8 lacks a requiredExecutionLevel level setting in its manifest File File ServiceInQuestion.exe.6689DF02_DE5F_4A95_9F7A_EE3BBBBC50C8


But these exist in another installation project which does install these services properly. The ServiceInstall table entries in this other project also match the ones that end up in the built .msi once my test project consumes the merge module. (which i verified by viewing the .msi in direct edit mode.)

Here is the InstallServices piece of the log from the main installation:


MSI (s) (A4:04) [08:59:04:843]: Executing op: ServiceInstall(Name=ServiceA,DisplayName=ServiceA,ImagePath="E:\Program Files\Companyname\Product\bin\ServiceA.exe",ServiceType=272,StartType=3,ErrorControl=0,LoadOrderGroup=Base,Dependencies=Product_OtherService[~][~],,,Password=**********,Description=Stuff)
MSI (s) (A4:04) [08:59:05:359]: Executing op: ServiceInstall(Name=ServiceB,DisplayName=Product ServiceDescription,ImagePath="E:\Program Files\Companyname\Product\bin\ServiceB.exe",ServiceType=272,StartType=2,ErrorControl=0,LoadOrderGroup=Base,,,,Password=**********,Description=Stuff)


I would include the log from running the sample, but it really looks the same, except there is not ServiceB line. I think the screenshot attached would be more useful, anyways.

Attached are the table entries from the sample project that consumes my merge modules (top) and the original installation from which these were extracted (bottom). Suffice it to say that the blanked out stuff all matches exactly. (Of course, so does the un-blanked-out stuff...)

-----


The MM that installs ServiceB does nothing else but (try to) install ServiceB, but I will try to re-create the MM from scratch and see if the problem goes away.

Kelter
09-28-2010, 09:58 AM
I created another simple test project.
I added the merge module upon which the module containing ServiceB depends. (let's call it ModuleA).
I added ModuleB (which does nothing but install ServiceB).
Again, the InstallServices action completely ignored ServiceB.
I created a new merge module.
I re-created the ServiceB component. It contains one file, and the InstallServices information.
I removed everything from the simple test project, and added just the new merge module.
InstallServices doesn't run during the Deferred Execution sequence.

Why does msi hate me? :-P