不会在卸载时删除服务和文件

不会在卸载时删除服务和文件

本文介绍了Wix 不会在卸载时删除服务和文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

首先我阅读了这个主题:为什么不是我的卸载时删除了服务?(WIX),但没有帮助.

First of all I read this topic: Why isn't my service deleted on uninstall? (WIX), but it didn't help.

我正在尝试使用 SQLite 互操作作为 Windows 服务安装我的应用程序.安装效果很好,但在卸载过程中只删除了 SQLite.Interop.dll 文件,服务仍在运行,文件完全被删除.

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.

我的 WIX 文件如下所示:

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>
        [...]

在 msi 日志中,我有以下内容:

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.

更新感谢 Bob Arson,我重读了我的 msi 日志.我创立了以下内容:

UPDATEThanks to Bob Arson I reread my msi log. I founded following:

MSI (c) (A4:C8) [09:17:36:719]:禁止卸载组件:{12345678-1234-1234-1234-222222222222},因为存在另一个客户端

推荐答案

稍后查看日志.您引用的部分只是 MSI 处理数据库,而不是它实际尝试停止和删除服务的部分.

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.

这篇关于Wix 不会在卸载时删除服务和文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-28 07:40