Wix does not remove service and files on uninstall

2019-07-26 22:26发布

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

标签: c# wix
1条回答
Anthone
2楼-- · 2019-07-26 22:47

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.

查看更多
登录 后发表回答