I have an installer which installing window services. The code to start and stop window service is below:
<Component Id="cmp690F4EBE95710C864C32A36852D2EB2F" Guid="{F933F79A-F76B-45F9-A951-6AD31C77B180}">
<File Id="fil61E48774FB18BBADEDCE4566002C9F54" KeyPath="yes" Source="$(var.APMrelease)\LiveServer.exe" Name="LiveServer.exe" DiskId="1">
<firewall:FirewallException Id="LiveServer.exe" Name="LiveServer.exe" Description="LiveServer 2.0" Profile="all" IgnoreFailure="yes" Scope="any" />
</File>
<ServiceInstall Id="InstallLiveServerService" DisplayName=" LiveServer" Description="LiveServer 2.0" Name="LiveServer" Start="auto" Type="ownProcess" Vital="yes" ErrorControl="normal">
<util:ServiceConfig FirstFailureActionType="restart" SecondFailureActionType="restart" ThirdFailureActionType="restart" ResetPeriodInDays="4" />
<!--<ServiceDependency Id="PostMaster" />-->
</ServiceInstall>
<ServiceControl Id="StopLiveServerService" Name="LiveServer" Stop="both" Remove="uninstall" Wait="yes" />
</Component>
I am starting my service with custom action which is fine. But when uninstalling the installer, sometimes service get hang and unable to stop due to which uninstall fails. Is there any way to wait and then kill the service or any other workaround?
Related
I´ve got the following code in my WIX-setup. Now I do want to stop the service, when I install it again.
<Component Id="CMP_Service" Feature="Core" Guid="8926df5e-89b3-47b0-875e-b5c4d14ab0b4">
<File Source="$(var.Service.TargetPath)" KeyPath="yes">
<fire:FirewallException Id="ServiceException" Name="Service Exception" Protocol="tcp" Port="[PORTProperty]" Scope="any" />
</File>
<ServiceInstall Id="ServiceInstallELS"
Name="Service"
Description="Service"
Start="auto"
Account="NT AUTHORITY\LocalService"
ErrorControl="critical"
Type="ownProcess"
Vital="yes" Arguments=" /start AtledService" />
<ServiceControl Id="ServiceControllELS"
Name="Service"
Start="install"
Stop="both"
Remove="uninstall"
Wait="yes" />
</Component>
I have a Kofax component exe which I want to run as a service. Earlier srvany.exe is used to register the exe as a service manually. I am creating a wix msi installer which will install it as a service. After installation when I am running exe as a administrator manually then it is running perfectly and doing proper updates otherwise without admin giving some activex error. Therefore I checked "Run this program as a administrator" in exe property. My problem is the service installed by msi is not executing the exe automatically and no update happening. But if service is up and running and then I will try to run exe manually then it is giving message that "it is already running" that means service is running exe but not updating anythiing. What change should i make in below code so that service can pick the exe and run.
<Component Id="comp_KofaxCaptureQCRoute_exe" Guid="F7C1EBE7-3D7B-4E6D-8098-81EDDFD156EF" Permanent="no" Transitive="no">
<File Id="file_KofaxCaptureQCRoute_exe" DiskId="1" Hidden="no" ReadOnly="no" TrueType="no" System="no" Vital="yes" Name="KofaxCaptureQCRoute.exe" Source="..\QC Route\KofaxCaptureQCRoute\bin\debug\KofaxCaptureQCRoute.exe" KeyPath="yes" />
</Component>
<Component Id="comp_file_srvany" Guid="D9CA373B-66B9-4FC5-A88D-E97FDDBBD526">
<File Id="file_srvany" Source="..\QC Route\srvany.exe" KeyPath="yes" />
<ServiceInstall
Id="QCRouteService"
Type="ownProcess"
Name="QCRouteService"
DisplayName="Kofax_QCRoute_Service"
Start="auto"
Account="[SERVICEACCOUNT]"
Password="[SERVICEPASSWORD]"
ErrorControl="normal"
Vital="yes"
/>
<ServiceControl Id="Kofax_QCRoute_Service" Stop="both" Remove="uninstall" Name="QCRouteService" Wait="yes" />
<RegistryKey Root="HKLM"
Key="SYSTEM\CurrentControlSet\Services\QCRouteService\Parameters"
Action="createAndRemoveOnUninstall">
<RegistryValue Type="string" Name="Application" Value=""[#file_KofaxCaptureQCRoute_exe]"" />
</RegistryKey>
<RegistryKey Root="HKLM"
Key="SYSTEM\CurrentControlSet\Services\QCRouteService\Enum"
Action="createAndRemoveOnUninstall">
<RegistryValue Type="string" Name="0" Value="Root\LEGACY_QCROUTESERVICE\0000" />
<RegistryValue Type="integer" Name="Count" Value="1" />
<RegistryValue Type="integer" Name="NextInstance" Value="1" />
</RegistryKey>
</Component>
I believe in your service install you're trying to run it under the account specified by the properties SERVICEACCOUNT, SERVICEPASSWORD possibly taken from an example seen elsewhere.
If you don't have these properties set then you should use a ServiceInstall close to this one
<ServiceInstall
Id="QCRouteService"
Type="ownProcess"
Name="QCRouteService"
DisplayName="Kofax_QCRoute_Service"
Start="auto"
Account="LocalSystem"
ErrorControl="normal"
Vital="yes"/>
Also note your ServiceControl has omitted the Start inner text
<ServiceControl Id="Kofax_QCRoute_Service" Start="install" Stop="both" Remove="uninstall" Name="QCRouteService" Wait="yes" />
I want to install and start Redis (for Windows) as part of our software package. The installation and start of the service is working correctly, but an error occurs during the installation, followed by a rollback and the service is not removed after the rollback.
Can anyone help me find out what I'm doing wrong here? Also, do I need separate removal commands too, or does rollback work for the uninstall too?
(The values like [#fil5E85DBB2FFC8A2CFA55EDCADD8376C1F] are the Id's generated with HeatDirectory for the redis-server.exe and its directory)
<!--Install Redis-->
<CustomAction Id="SetRedisInstall"
Property="RedisInstall"
Value=""[#fil5E85DBB2FFC8A2CFA55EDCADD8376C1F]" --service-install "[dir13BD3F7531FC8E0F30BB51FAA1B1357F]redis.windows.conf" --loglevel verbose" />
<CustomAction Id="RedisInstall"
BinaryKey="WixCA"
DllEntry="CAQuietExec"
Execute="deferred"
Return="check"
Impersonate="no"/>
<CustomAction Id="SetRedisStart" Property="RedisStart" Value=""[#fil5E85DBB2FFC8A2CFA55EDCADD8376C1F]" --service-start" />
<CustomAction Id="RedisStart"
BinaryKey="WixCA"
DllEntry="CAQuietExec"
Execute="deferred"
Return="check"
Impersonate="no"/>
<!--Rollback Redis-->
<CustomAction Id="SetRedisStop" Property="RedisStop" Value=""[#fil5E85DBB2FFC8A2CFA55EDCADD8376C1F]" --service-stop" />
<CustomAction Id="RedisStop"
BinaryKey="WixCA"
DllEntry="CAQuietExec"
Execute="rollback"
Return="ignore"
Impersonate="no"/>
<CustomAction Id="SetRedisRemove" Property="RedisRemove" Value=""[#fil5E85DBB2FFC8A2CFA55EDCADD8376C1F]" --service-uninstall" />
<CustomAction Id="RedisRemove"
BinaryKey="WixCA"
DllEntry="CAQuietExec"
Execute="ignore"
Return="asyncWait"
Impersonate="no"/>
<InstallExecuteSequence>
<!--Install Redis-->
<Custom Action="RedisInstall" Before="InstallFinalize">Not Installed</Custom>
<Custom Action="SetRedisInstall" Before="RedisInstall">Not Installed</Custom>
<Custom Action="RedisStart" After="RedisInstall">Not Installed</Custom>
<Custom Action="SetRedisStart" Before="RedisStart">Not Installed</Custom>
<!--Rollback Redis-->
<Custom Action="SetRedisStop" Before="RedisStop"></Custom>
<Custom Action="RedisStop" Before="RedisStart"></Custom>
<Custom Action="RedisRemove" Before="RedisInstall"></Custom>
<Custom Action="SetRedisRemove" Before="RedisRemove"></Custom>
</InstallExecuteSequence>
Edit I have the component
<Feature Id="Redis" Title="Redis" Level="1" >
<ComponentGroupRef Id="RedisWxs"/>
</Feature>
And the service part now too:
<ServiceInstall Id="siRedisService" Description="Redis Service" DisplayName="Redis" Arguments=""[dir13BD3F7531FC8E0F30BB51FAA1B1357F]redis.windows.conf"" ErrorControl="normal" Name="Redis" Start="auto" Type="ownProcess" Vital="yes" Account="NT AUTHORITY\NetworkService"/>
<ServiceControl Id="scRedisService" Name="Redis" Start="install" Stop="both" Remove="both" Wait="yes" />
How can I add the service to the existing component?
Edit 2
I have disabled automatc harvesting and edited the output file, so that fixes the reference problem. I still have the problem that the Redis service can't start. However, when I just copy paste the path (incl config file) in cmd, it works perfectly fine...
This is the code
<Component Id="cmp911C50BAA696496834114926A958787D" Guid="*">
<File Id="fil5E85DBB2FFC8A2CFA55EDCADD8376C1F" KeyPath="yes" Source="$(var.RedisPath)\redis-server.exe" />
<ServiceInstall Id="siRedisService" DisplayName="Redis" Arguments="--service-run redis.windows.conf --loglevel verbose" ErrorControl="normal" Name="Redis" Start="auto" Type="ownProcess" Vital="yes" Account="NT AUTHORITY\NetworkService"/>
<ServiceControl Id="scRedisService" Name="Redis" Start="install" Stop="both" Remove="both" Wait="yes" />
</Component>
<Component Id="cmpFC38C2953561FABFFCF29CCEC52692E1" Guid="*">
<File Id="filF5607FB03CD4B203C699DA14D17FF53B" KeyPath="yes" Source="$(var.RedisPath)\redis.windows.conf" />
</Component>
Edit 3 - working solution
There was a permission problem, this is how I fixed it:
<Component Id="cmp911C50BAA696496834114926A958787D" Guid="*">
<File Id="fil5E85DBB2FFC8A2CFA55EDCADD8376C1F" KeyPath="yes" Source="$(var.RedisPath)\redis-server.exe" />
<CreateFolder Directory="dir13BD3F7531FC8E0F30BB51FAA1B1357F">
<util:PermissionEx User="NT AUTHORITY\NETWORKSERVICE" GenericAll="yes" />
</CreateFolder>
<ServiceInstall Id="siRedisService" DisplayName="Redis" Arguments="--service-run "[#filF5607FB03CD4B203C699DA14D17FF53B]"" ErrorControl="normal" Name="Redis" Start="auto" Type="ownProcess" Vital="yes" Account="NT AUTHORITY\NETWORKSERVICE"/>
<ServiceControl Id="scRedisService" Name="Redis" Start="install" Stop="both" Remove="both" Wait="yes" />
</Component>
That sure is a lot of custom actions. I would get rid of them. Here's how I roll:
<Component Id="redacted" Guid="redacted">
<File Id="redacted" Source="$(var.SourceDir)\redis-server.exe" KeyPath="yes" />
<ServiceInstall Id="siRedisService" Description="Redis Service" DisplayName="Redis" Arguments="--service-run redis.windows.conf --loglevel verbose" ErrorControl="normal" Name="Redis" Start="auto" Type="ownProcess" Vital="yes" Account="NT AUTHORITY\NetworkService"/>
<ServiceControl Id="scRedisService" Name="Redis" Start="install" Stop="both" Remove="both" Wait="yes" />
</Component>
<Component Id="redacted" Guid="redacted">
<File Id="redacted" Source="$(var.SourceDir)\redis.windows.conf" KeyPath="yes" />
</Component>
I've said it many times in the past... a service is a service is a service. Anything other then ServiceInstall and ServiceControl and the occasional Registry entry is a form of Self Registration antipattern madness. Services can be written in different languages and hosted by different runtimes but their interaction with the service control manager APIs are all the same and MSI can handle it natively once you work out those details.
I'm using Wix installer. When I run installer I get this error:
I'm logged as administrator. I also tried create anotherone user.
So I tried:
1| I add my user "Administrator" to place "Log on as a service"
2| I checked my Net.Tcp Port Sharing Service if is running
3| I get my SID
4| I added to SMSvcHost.exe.config section with my SID.
Check "My administrator sid"
<system.serviceModel.activation>
<net.tcp listenBacklog="10" maxPendingConnections="100" maxPendingAccepts="2" receiveTimeout="00:00:10" teredoEnabled="false">
<allowAccounts>
// My administrator sid
<add securityIdentifier="S-1-5-21-334175509-2570308825-1313804348-500"/>
// LocalSystem account
<add securityIdentifier="S-1-5-18"/>
// LocalService account
<add securityIdentifier="S-1-5-19"/>
// Administrators account
<add securityIdentifier="S-1-5-20"/>
// Network Service account
<add securityIdentifier="S-1-5-32-544" />
// IIS_IUSRS account (Vista only)
<add securityIdentifier="S-1-5-32-568"/>
</allowAccounts>
</net.tcp>
<net.pipe maxPendingConnections="100" maxPendingAccepts="2" receiveTimeout="00:00:10">
<allowAccounts>
// LocalSystem account
<add securityIdentifier="S-1-5-18"/>
// LocalService account
<add securityIdentifier="S-1-5-19"/>
// Administrators account
<add securityIdentifier="S-1-5-20"/>
// Network Service account
<add securityIdentifier="S-1-5-32-544" />
// IIS_IUSRS account (Vista only)
<add securityIdentifier="S-1-5-32-568"/>
</allowAccounts>
</net.pipe>
<diagnostics performanceCountersEnabled="true" />
</system.serviceModel.activation>
5| I edit all SMSvcHost.exe.config for sure:
C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\
C:\Windows\Microsoft.NET\Framework\v4.0.30319
C:\Windows\Microsoft.NET\Framework64\v3.0\Windows Communication Foundation
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
6| Restart = Net.Tcp Port Sharing Service
7| When I got that warning message during instalation, I didn't cancel, I tried also run service from path where files are installed and via cmd prompt I run manualy and it's run.
8| But my instalator can't finish instalation. Everytime I got that sentense: "Verify that you have sufficient privileges to start system services." I can only cancel instalation and instalation roll back and delete all files.
ANY HELP PLEASE? 5 DAYS I'M GOING AROUND THIS WITHOUT RESULT. I TESTED THAT ON 2 DIFERRENT VIRTUAL MACHINES WITH WINDOWS SERVER X64 AND WINDOWS 8 X64.
My component code is here:
<?xml version="1.0" encoding="utf-8"?>
<!--
"C:\Program Files (x86)\Windows Installer XML v3.6\bin\heat.exe" dir ..\WindowsServiceHost\bin\Release -dr TARGETDIR -cg WindowsServiceHost_Project -scom -sfrag -sreg -srd -gg -var var.WindowsServiceHost.TargetDir -out WindowsServiceHost.wxs -pog Binaries -pog Content
-->
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<!-- The initially, this has been created with Heat to get all output -->
<Fragment>
<DirectoryRef Id="APPLICATIONFOLDER">
<Component Id="cmpF563E3CE297225623330C6BDFBFCDB12" Guid="{6742348C-A620-46FA-8DA8-0EB0CCA1C123}">
<File Id="fil21CA92101BF52AFED2FDCE521FCA6123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\Antlr3.Runtime.dll" />
</Component>
<Component Id="cmp353671C776668DEF5DCC15C233E2CA49" Guid="{A8F26FCD-4BBB-4665-903A-45DDAAFE3123}">
<File Id="fil889A0DB56C827E66FA3035CED6E3E123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\Castle.ActiveRecord.dll" />
</Component>
<Component Id="cmpCD33B68B2028B11161C5509206174D37" Guid="{248DAA3F-EC3C-44E5-A57A-DD7090222123}">
<File Id="fil98E1300420674E5F83417696A895A123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\Castle.Components.Validator.dll" />
</Component>
<Component Id="cmp4AE2CD167FF4894E9076AF5FC612D123" Guid="{D7BB86D2-A384-4AAE-8D52-B0877B849123}">
<File Id="fil808D19806529ABA1617D818072819123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\Castle.Core.dll" />
</Component>
<Component Id="cmpD9F8C495CF8479B78BC318E8E9DAA123" Guid="{DA1C4B1F-FE3C-42D2-A273-39BFB2FB7123}">
<File Id="fil2EBE8BAEA1EB66844366CCC4FD863123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\Castle.Facilities.WcfIntegration.dll" />
</Component>
<Component Id="cmp3F6A205A397BEA19BBA40D18483BD123" Guid="{2FDB99B1-D558-4750-A3DB-00D8EB1C1123}">
<File Id="fil151C8FBAEDA5D4BDEB438F301EAE7123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\Castle.Windsor.dll" />
</Component>
<Component Id="cmpC070BF8C300741A523BD7ED7CBB9C123" Guid="{71DDC933-8912-4CEB-9257-FE07A0A3C123}">
<File Id="filD577F4DF6A5A8E2CC82379AC96025123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\Viewer.Viewer.DAL.dll" />
</Component>
<Component Id="cmp38F30287B63682CF5E25FFED1C597123" Guid="{896B54CA-6279-48A2-A20D-6C32D9370123}">
<File Id="fil2E5F30135D3485052620C0369A0C8123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\Viewer.Viewer.exe" />
<!-- This is the problem I was having - I was not able to reference this component and this is not supported yes as based on hours of googling -->
<!-- We're able to define almost anything on how the service is configured, under which user, etc -->
<ServiceInstall Id="ServiceInstaller" Type="ownProcess" Vital="yes" Name="ViewerService"
DisplayName="Viewer Service" Description="Viewer service handles all user requests and manages tasks."
Start="auto" Account="[SERVICEACCOUNT]" Password="[SERVICEPASSWORD]" ErrorControl="ignore" Interactive="no">
<util:ServiceConfig FirstFailureActionType="restart" SecondFailureActionType="restart" ThirdFailureActionType="restart" />
</ServiceInstall>
<ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="ViewerService" Wait="yes" />
</Component>
<Component Id="cmpF4715A23C1FF23A034E3C5D7E9899123" Guid="{5439277D-DA70-476D-AFA3-A7E21792B123}">
<File Id="filD6D2807DE16A409F1A2667BA03ED8123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\Viewer.exe.config" />
</Component>
<Component Id="cmpED6174C35AEBF8A8918AC859C9681123" Guid="{84A5A3C2-A5DE-40AB-8ADC-31D2A5C1E123}">
<File Id="fil5DD49061C2ED546B40CEED5FC1BD2123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\Viewer.Library.dll" />
</Component>
<Component Id="cmpB2A2EA83D72F4C7290397730910A4123" Guid="{6A8F8C8A-47E7-4A70-B05C-92EA6711B123}">
<File Id="filF3891F073E13532E343276EC37F96123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\PstLibrary.dll" />
</Component>
<Component Id="cmpEBE3708427CCDA04E12DE366A56F4123" Guid="{60645E54-C07B-41B3-B219-4B7CECC5A123}">
<File Id="fil06760C8D25183C8A8CF53F339D6BC123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\Iesi.Collections.dll" />
</Component>
<Component Id="cmp2B6E39BC25CC0CDCEC3DAC9E80C14123" Guid="{6728EDE3-FCCD-4FC1-9032-2EA6F84E7123}">
<File Id="fil3CA8B6115A016E51F3BA10386CAEE123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\Ionic.Zip.Reduced.dll" />
</Component>
<Component Id="cmp95FFFFB1FF4FE88C7ABFAFDC94AFA123" Guid="{354B5354-4134-4225-9FA8-B6EBD1566123}">
<File Id="filD2AD4A87E4FFD97570BD414BF64D2123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\LogModule.dll" />
</Component>
<Component Id="cmp06CFD0EF8C78731C8FE99058BA827123" Guid="{13D3CCD4-A068-40F7-91F7-01BD9DAC7123}">
<File Id="filC52F7EC41731AA5B6D39C500DF546123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\Lucene.Net.dll" />
</Component>
<Component Id="cmp02134B521CDB778B256053B705B39123" Guid="{AB850CDB-C591-47C4-876A-00744AFAC123}">
<File Id="fil8B09A9C2BC8D71A0E5E923F6F4039123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\MailBee.NET.dll" />
</Component>
<Component Id="cmp0732D020141A27B3EF606680AF63C123" Guid="{39446EE7-47AE-4757-B5A4-DED57F7CE123}">
<File Id="fil194D74862CE83A0371D6324FE1C0D123" KeyPath="yes" Source="..\_dependencies\Interop.Redemption.dll" />
</Component>
<Component Id="cmp0732D020141A27B3EF606680AF632123" Guid="{39446EE7-47AE-4757-B5A4-DED57F7C2123}">
<File Id="fil194D74862CE83A0371D6324FE1C02123" KeyPath="yes" Source="..\_dependencies\Redemption64.dll" />
</Component>
<Component Id="cmp9D56D720C5BABC0701758947084E5123" Guid="{E5C9921B-AA90-4B88-898F-5A3C6D2F7123}">
<File Id="filFEE1876E7EF6CE4F720645154DFD8123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\NHibernate.ByteCode.Castle.dll" />
</Component>
<Component Id="cmp48A389F21271FDC5825A9C1B25E82123" Guid="{D485D984-1568-4A28-B2EC-EFE9791B7123}">
<File Id="fil6EDFA9A322A7AB6A8E262D0DB4F60123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\NHibernate.dll" />
</Component>
<Component Id="cmpFEBBE1308148FADB702D2C8F4D13E123" Guid="{725DD9FB-61EC-48F8-A988-916C30C73123}">
<File Id="fil5145831B362C7509226E3A90E8FF2123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\NHibernate.Search.dll" />
</Component>
<Component Id="cmpEED54193D815302FC314DB0A2C9F8123" Guid="{DD277B4A-63F4-4988-BA83-D9AF1FC89123}">
<File Id="filF81E55DF73063A3872976B67B6628123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\Library.dll" />
</Component>
<Component Id="cmpA42846C9FB9AE5A84F07BCD1C1077123" Guid="{7A89E8A4-D5DC-4EB2-A80B-BB3455B2F123}">
<File Id="fil10DFB7AB70BD839083EA5F5DCA22C123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\Processing.dll" />
</Component>
<Component Id="cmpE88CBB7A43EF8781FD98762843CF1123" Guid="{862E6578-5507-4128-89CA-877315A88123}">
<File Id="fil6095C78A39C6633B24FADCC044720123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\RedemptionWrapper.dll" />
</Component>
<Component Id="cmp74BE405C599A7B2BFF4B24B035404123" Guid="{65632DE4-45A3-4C81-911F-8E0EA7073123}">
<File Id="fil9FAD52E634F2925DB072CBBAE8AC5123" KeyPath="yes" Source="$(var.WindowsServiceHost.TargetDir)\Remotion.Data.Linq.dll" />
</Component>
<Directory Id="dirD9D25461613D53ECC73127337CA03123" Name="Licenses">
<Component Id="cmpC47DFFE5D48426458E24BE6D0A83C123" Guid="{4F3CFB3D-4E7A-4430-8EC6-3403EB856123}">
<File Id="filF3CFC81B4D04F6521220038AE4103123" KeyPath="yes" Source="..\Common\Licenses\Antlr3.license.txt" />
</Component>
<Component Id="cmp322E81F6D6B5D7FFE823EAEABAE77123" Guid="{E48BC22E-682C-4D87-BABF-1E71F6AE2123}">
<File Id="fil7294E69E9C2DDF5F09B62BA6E2EB1123" KeyPath="yes" Source="..\Common\Licenses\Castle.license.txt" />
</Component>
<Component Id="cmp5537750B07AA6621D099EA533E58C123" Guid="{412C1F3B-1A6C-444F-8645-4503F484F123}">
<File Id="filFFF3C0457CC60E6EC076FBB3DD232123" KeyPath="yes" Source="..\Common\Licenses\Iesi.Collections.license.txt" />
</Component>
<Component Id="cmp92EF42C91FD5F2D0797844A57BE78123" Guid="{E35E3446-8DD2-4DE0-B7FE-E27556D8D123}">
<File Id="filA9F4D112BA2C37F6067E328E8C972123" KeyPath="yes" Source="..\Common\Licenses\Ionic.Zip.license.txt" />
</Component>
<Component Id="cmpD6E1D6312AA116069E68B968F9AED123" Guid="{B670C6F0-901F-4049-A256-406B77F0E123}">
<File Id="filC50888C92A23713C5CE5FA816A8F9123" KeyPath="yes" Source="..\Common\Licenses\Lucene.Net.license.txt" />
</Component>
<Component Id="cmp1EEBF5BABE23C2C767438072E6410123" Guid="{3799AA4F-A169-41A1-A1DE-907F315E3123}">
<File Id="filE39771746641899F88B2A3B05E9AA123" KeyPath="yes" Source="..\Common\Licenses\NHibernate.license.txt" />
</Component>
<Component Id="cmpCF5ECE8D2EADADA313278BA15AF99123" Guid="{94C3D676-8B2B-4AAE-A4BC-226763BEE123}">
<File Id="filC1AA47E8984A0651CDA4689D2A768123" KeyPath="yes" Source="..\Common\Licenses\NLog.license.txt" />
</Component>
<Component Id="cmp599BAD3717C0FCEE410496C8E8066123" Guid="{CF247694-83FE-456D-8645-55EDF88AD123}">
<File Id="filF046615251B088B6CBFB5383F775F123" KeyPath="yes" Source="..\Common\Licenses\Remotion.Data.Linq.license.txt" />
</Component>
</Directory>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="WindowsServiceHost_Project">
<ComponentRef Id="cmpF563E3CE297225623330C6BDFBFCD123" />
<ComponentRef Id="cmp353671C776668DEF5DCC15C233E2C123" />
<ComponentRef Id="cmpCD33B68B2028B11161C5509206174123" />
<ComponentRef Id="cmp4AE2CD167FF4894E9076AF5FC612D123" />
<ComponentRef Id="cmpD9F8C495CF8479B78BC318E8E9DAA123" />
<ComponentRef Id="cmp3F6A205A397BEA19BBA40D18483BD123" />
<ComponentRef Id="cmpC070BF8C300741A523BD7ED7CBB9C123" />
<ComponentRef Id="cmp38F30287B63682CF5E25FFED1C597123" />
<ComponentRef Id="cmpF4715A23C1FF23A034E3C5D7E9899123" />
<ComponentRef Id="cmpED6174C35AEBF8A8918AC859C9681123" />
<ComponentRef Id="cmpB2A2EA83D72F4C7290397730910A4123" />
<ComponentRef Id="cmpEBE3708427CCDA04E12DE366A56F4123" />
<ComponentRef Id="cmp2B6E39BC25CC0CDCEC3DAC9E80C14123" />
<ComponentRef Id="cmp95FFFFB1FF4FE88C7ABFAFDC94AFA123" />
<ComponentRef Id="cmp06CFD0EF8C78731C8FE99058BA827123" />
<ComponentRef Id="cmp02134B521CDB778B256053B705B39123" />
<ComponentRef Id="cmp9D56D720C5BABC0701758947084E5123" />
<ComponentRef Id="cmp48A389F21271FDC5825A9C1B25E82123" />
<ComponentRef Id="cmpFEBBE1308148FADB702D2C8F4D13E123" />
<ComponentRef Id="cmpEED54193D815302FC314DB0A2C9F8123" />
<ComponentRef Id="cmp74BE405C599A7B2BFF4B24B035404123" />
<ComponentRef Id="cmpC47DFFE5D48426458E24BE6D0A83C123" />
<ComponentRef Id="cmp322E81F6D6B5D7FFE823EAEABAE77123" />
<ComponentRef Id="cmp5537750B07AA6621D099EA533E58C123" />
<ComponentRef Id="cmp92EF42C91FD5F2D0797844A57BE78123" />
<ComponentRef Id="cmpD6E1D6312AA116069E68B968F9AED123" />
<ComponentRef Id="cmp1EEBF5BABE23C2C767438072E6410123" />
<ComponentRef Id="cmpCF5ECE8D2EADADA313278BA15AF99123" />
<ComponentRef Id="cmp599BAD3717C0FCEE410496C8E8066123" />
<ComponentRef Id="cmp0732D020141A27B3EF606680AF63C123" />
<ComponentRef Id="cmpA42846C9FB9AE5A84F07BCD1C1077123" />
<ComponentRef Id="cmpE88CBB7A43EF8781FD98762843CF1123" />
<ComponentRef Id="cmp0732D020141A27B3EF606680AF632123" />
</ComponentGroup>
</Fragment>
</Wix>
just fix the same problem by seperating the service control. do this
<ServiceControl Id="scStorageServiceReporter_Start"
Name="Dhcp"
Start="install"
Wait="no" />
<ServiceControl Id="scStorageServiceReporter_Stop"
Name="Dhcp"
Stop="uninstall"
Remove="uninstall"
Wait="yes" />
instead of this
<ServiceControl
Id="scStorageReporter"
Name="StorageReporterService"
Start="install"
Stop="both"
Remove="uninstall"
Wait="yes"/>
Looking at your snippet this may be a red herring, but I've seen this exact same error if your installer is also adding items to the GAC (which yours doesn't seem to be - hence the red herring). This is due to GAC'd components not being available until after the service control attempts to start the service. In this case the "permissions" message isn't accurate either!
You can try to rebuild the wix project. I got this issue too and rebuilding the project has fixed it.
In my particular case the problem was that the configuration *.config file that is used by my windows service was invalid, because of that the service could not be started. It took me a while to figure out what the problem was.
Maybe it will help someone.
You can get this error also because the application that starts running is throwing an exception soon after start. For example I got this error because I had Console.ReadKey in my code.
The best way to check if this is the case is to check your application logs. By default Windows Event Viewer won't have any helpful information.
I have created WiX installer that installs website in IIS but I have to keep IIS backward compatibility on.
<Component Id="VirtualDirectoryWebAppPool" Guid="{GIUD}" Permanent="yes">
<iis:WebAppPool Id="WebAppPool" Name="${ProductName}" ManagedRuntimeVersion="v4.0" ManagedPipelineMode="integrated" />
<CreateFolder />
</Component>
<Component Id="VirtualDirectoryWithoutWinAuth" Guid="{GUID}" Permanent="yes">
<Condition>TYPEOFAUTHENTICATION = "Forms"</Condition>
<iis:WebVirtualDir Id="WebVirtualDirectoryWithoutWinAuth" Alias="[VDNAME]" Directory="WEBUIFOLDER" WebSite="DefaultWebSite" >
<iis:WebApplication Id="WebApplicationWithoutWinAuth" Name="[VDNAME]" WebAppPool="WebAppPool" />
<iis:WebDirProperties Id="WebDirectoryPropertiesWithoutWinAuth" AnonymousAccess="yes" WindowsAuthentication="no" />
</iis:WebVirtualDir>
<CreateFolder />
</Component>
<Component Id="VirtualDirectoryWithWinAuth" Guid="{GIUD}" Permanent="yes">
<Condition>TYPEOFAUTHENTICATION = "Windows"</Condition>
<iis:WebVirtualDir Id="WebVirtualDirectoryWithWinAuth" Alias="[VDNAME]" Directory="WEBUIFOLDER" WebSite="DefaultWebSite" >
<iis:WebApplication Id="WebApplicationWithWinAuth" Name="[VDNAME]" WebAppPool="WebAppPool" />
<iis:WebDirProperties Id="WebDirectoryPropertiesWithWinAuth" AnonymousAccess="yes" WindowsAuthentication="yes" />
</iis:WebVirtualDir>
<CreateFolder />
</Component>
...
<iis:WebSite Id="DefaultWebSite" Description="Default Web Site" Directory="WEBUIFOLDER">
<iis:WebAddress Id="AllUnassigned" Port="80" />
</iis:WebSite>
But I do not want to keep the IIS backward compatibility on.