Hi, for conditional service dependencies please have a look at the thread "[WiX-users] Conditional service installation"
regards Stefan Erv Walter wrote: > We're struggling with a problem, and I'm curious if anyone has any > creative solutions they can think of. > > We have a windows service that our MSI installs. This service does some > things with MSMQ. We want to ensure that our service has the > appropriate ServiceDependency so that Windows starts things in the > correct order during system startup. > > Our WiX structure looks something like this (attributes removed to > simplify): > > <Component> > <File/> > <ServiceInstall> > <ServiceConfig/> > <ServiceDependency Id="MSMQ"/> > <ServiceDependency Id="Eventlog"/> > </ServiceInstall> > <ServiceControl/> > </Component> > > Now, in the next version of our product, the MSMQ related functionality > is optional and we will have many customers who will not need or care > about the MSMQ functionality. We'd like to detect if MSMQ is installed > and make sure that the service is installed with the MSMQ dependency > only if MSMQ is installed (else the service won't start when MSMQ is not > installed). > > The first attempt to accomplish this with WiX was to have two nearly > identical components and use conditions to choose only the correct one: > > <Component> > <File/> > <ServiceInstall> > <ServiceConfig/> > <ServiceDependency Id="MSMQ"/> > <ServiceDependency Id="Eventlog"/> > </ServiceInstall> > <ServiceControl/> > <Condition>MSMQ_IS_INSTALLED</Condition> > </Component> > <Component> > <File/> > <ServiceInstall> > <ServiceConfig/> > <ServiceDependency Id="Eventlog"/> > </ServiceInstall> > <ServiceControl/> > <Condition>NOT MSMQ_IS_INSTALLED</Condition> > </Component> > > This doesn't work (in WiX v2) because of the <ServiceConfig/>. We use > ServiceConfig to set the restart options correctly. WiX tries to put two > rows in the ServiceConfig table both with the same ServiceName. This > fails because ServiceName is the primary key and the second row errors > out as a duplicate. > > So, the next attempt was to move the ServiceConfig element to a > separate, shared Component that would always get installed regardless of > if MSMQ was needed or not. This compiles into an MSI but fails at > install time because the NewService column in the ServiceConfig table is > set to 0 and the SchedServiceConfig custom action has code to verify > that the service actually exists and this check runs before the > installations script is executed (and so the service hasn't been > installed yet). > > I don't like any of the options we're currently exploring, so I'm > looking for any brainstorming ideas. > > Options we're currently looking at: > > 1. Using <CustomTable> to add the ServiceConfig table with the single > row we need and with NewService set to 1 and adding SchedServiceConfig > to the sequence ourselves. Yuck. > > 2. Dropping the dependency from the ServiceInstall completely and adding > a custom action to conditionally call sc.exe to add the dependency back > if MSMQ is installed. Bleh. > > 3. Dropping the dependency from the ServiceInstall completely and adding > code to our service itself so that when it starts up, it ensures that > MSMQ is running and attempt to start it if it isn't already running. > Windows won't know that our service depends on MSMQ, but we'll try to > replicate the logic that Windows would have used. Bummer. > > Any other suggestions? Note, we haven't looked at WiX v3 yet (that's on > my list for today) to see if there is some new way around this issue > there. > > Thanks, > Erv > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys -- and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > > __________ NOD32 1.1675 (20060723) Information __________ > > This message was checked by NOD32 antivirus system. > http://www.eset.com > > > -- Stefan Pavlik | [EMAIL PROTECTED] Whitestein Technologies | www.whitestein.com Panenska 28 | SK-81103 Bratislava | Slovak Republic Tel +421(2)5930-0735 | Fax +421(2)5443-5512 ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users