卸载在WIX中创建的安装程序时未删除Windows服务

时间:2011-09-06 13:16:54

标签: wix wix3.5

我已经创建了安装Windows服务的设置,但是当我卸载它时,服务仍然启动而不是删除。我在Wix中创建了设置msi。

 <DirectoryRef Id="INSTALLDIR">
       <Component Id='MyComponent' Guid='CDBA9BC4-F839-4CAB-8AB0-4397EC079541'>
<File Id='LogFWService' Name='LogFWService.exe' Source="$(var.LFShared)\LogFWService.exe" KeyPath="yes" />
 <ServiceInstall Id="InstallLFService" Name="LogFWService" DisplayName="OpenFramework Logging Service" Start="auto" ErrorControl="normal" Description="Captures log events and inserts the log messages into database" Type="ownProcess">
           <ServiceDependency Id="MSMQ" />
 </ServiceInstall>

<ServiceControl Id="sc_InstallLFService" Name="LogFWService" Start="install" Remove="uninstall" Stop="both" Wait="yes"/>
       </Component>
     </DirectoryRef>

即使我已经使用了删除文件属性,但在卸载时它仍然不会删除Windows服务。 请帮忙,任何人都有关于卸载Windows服务的知识。

2 个答案:

答案 0 :(得分:2)

我有类似的问题。我不是100%肯定,但我认为在我更改了安装组件的GUID后它就消失了。以前的GUID是从另一个项目复制粘贴的,以及用于安装Windows服务的整个安装标记,我忘了用新的GUID替换它。

BTW您可以使用命令propmt命令sc:

删除“剩余”服务

sc删除“YourServiceNameHere”

答案 1 :(得分:0)

在开发环境中测试同一个wix安装程序的多个版本时,我遇到了这种情况。问题是它无法删除实体(组件),因为仍然存在声明的依赖项。它通常是由于某些注册表项在之前的尝试中遗留下来的。

搜索以下内容并删除相应的(不是全部)键

  • 组件中密钥文件的ID
  • 组件的GUID
  • 目录/文件夹名称(可以包含在\ HKLM \ MS \ Win \ CurVer \ Installer \ Folders中的引用计数)
  • 密钥文件的名称(也是引用计数,但不在文件夹密钥中)

显示名称搜索的某些键往往位于“最近使用”列表或其他良性位置。使用标准regedit时这可能是一个繁琐的过程,因此如果你走这条路线,建议使用更好的工具。

理想情况下,您应该在可以恢复到先前状态的计算机上测试安装程序。