First of all I read this topic: Why isn't my service deleted on uninstall? (WIX), but it didn't help.
I am tyrying to install my application with SQLite interop as Windows Service. Install works great, but during uninstall only SQLite.Interop.dll files are deleted, service is still running and files are deleted at all.
My WIX file look like following:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Id="*" UpgradeCode="12345678-1234-1234-1234-111111111111" Name="MyApp Agent" Version="1.0.0" Manufacturer="MyApp" Language="1033">
<Package InstallerVersion="200" Compressed="yes" Comments="MyApp installer package" />
<Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
<PropertyRef Id="NETFRAMEWORK40FULL" />
<Condition Message="This application requires .NET Framework 4.0. Please install the .NET Framework then run this installer again."><![CDATA[Installed OR NETFRAMEWORK40FULL]]></Condition>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLDIR" Name="MyApp">
<Component Id="ApplicationFiles" Guid="12345678-1234-1234-1234-222222222222">
<File Id="SelfUpdate.exe" Source="!(bindpath.MainConsoleApp)\SelfUpdate.exe" />
<File Id="SQLite.Net.dll" Source="!(bindpath.MainConsoleApp)\SQLite.Net.dll" />
<File Id="SQLite.Net.Platform.Win32.dll" Source="!(bindpath.MainConsoleApp)\SQLite.Net.Platform.Win32.dll" />
<ServiceInstall Id="TrackCube" Type="ownProcess" Vital="yes" Name="TrackCube" DisplayName="TrackCube" Description="TrackCube" Start="auto" Account="LocalSystem" ErrorControl="ignore" Interactive="no">
<ServiceConfig DelayedAutoStart="yes" OnInstall="yes" OnReinstall="yes"/>
<util:ServiceConfig FirstFailureActionType="restart" SecondFailureActionType="restart" ThirdFailureActionType="restart" ResetPeriodInDays="1" RestartServiceDelayInSeconds="20" />
</ServiceInstall>
<ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="TrackCube" Wait="yes" />
</Component>
<Directory Id="DIR_x86" Name="x86">
<Component Id="ApplicationFiles32" Guid="12345678-1234-1234-1234-222222222224">
<CreateFolder />
<File Id="SQLite.Interop.dll.86" Name="SQLite.Interop.dll" Source="!(bindpath.MainConsoleApp)\x86\SQLite.Interop.dll" />
</Component>
</Directory>
<Directory Id="DIR_x64" Name="x64">
<Component Id="ApplicationFiles64" Guid="12345678-1234-1234-1234-222222222228">
<CreateFolder />
<File Id="SQLite.Interop.dll.64" Name="SQLite.Interop.dll" Source="!(bindpath.MainConsoleApp)\x64\SQLite.Interop.dll" />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" />
<Property Id="ARPSYSTEMCOMPONENT" Value="1" />
<Feature Id="DefaultFeature" Level="1">
<ComponentRef Id="ApplicationFiles" />
<ComponentRef Id="ApplicationFiles32" />
<ComponentRef Id="ApplicationFiles64" />
</Feature>
[...]
In msi log I have following:
Action 9:17:38: ProcessComponents. Updating component registration
Action start 9:17:38: ProcessComponents.
ProcessComponents:
Action ended 9:17:38: ProcessComponents. Return value 1.
MSI (s) (F8:58) [09:17:38:585]: Doing action: UnpublishFeatures
MSI (s) (F8:58) [09:17:38:585]: Note: 1: 2205 2: 3: ActionText
Action 9:17:38: UnpublishFeatures. Unpublishing Product Features
Action start 9:17:38: UnpublishFeatures.
UnpublishFeatures: Feature: Unpublishing Product Features
Action ended 9:17:38: UnpublishFeatures. Return value 1.
MSI (s) (F8:58) [09:17:38:586]: Doing action: StopServices
MSI (s) (F8:58) [09:17:38:586]: Note: 1: 2205 2: 3: ActionText
Action 9:17:38: StopServices. Stopping services
Action start 9:17:38: StopServices.
Action ended 9:17:38: StopServices. Return value 1.
MSI (s) (F8:58) [09:17:38:587]: Doing action: DeleteServices
MSI (s) (F8:58) [09:17:38:587]: Note: 1: 2205 2: 3: ActionText
Action 9:17:38: DeleteServices. Deleting services
Action start 9:17:38: DeleteServices.
Action ended 9:17:38: DeleteServices. Return value 1.
MSI (s) (F8:58) [09:17:38:588]: Doing action: RemoveFiles
MSI (s) (F8:58) [09:17:38:588]: Note: 1: 2205 2: 3: ActionText
Action 9:17:38: RemoveFiles. Removing files
Action start 9:17:38: RemoveFiles.
MSI (s) (F8:58) [09:17:38:589]: Note: 1: 2205 2: 3: RemoveFile
MSI (s) (F8:58) [09:17:38:589]: Note: 1: 2205 2: 3: RemoveFile
Action ended 9:17:38: RemoveFiles. Return value 0.
UPDATE Thanks to Bob Arson I reread my msi log. I founded following:
MSI (c) (A4:C8) [09:17:36:719]: Disallowing uninstallation of component: {12345678-1234-1234-1234-222222222222} since another client exists
Look later in the log. The part you quoted is just MSI processing the database, not the part where it's actually trying to stop and delete services.