2011-09-06 116 views
1

我创建了安装Windows服务的安装程序,但是当我卸载该服务时,服务仍然开始并且未被删除。我已经在Wix中创建了安装msi。在卸载WIX中创建的安装程序时未卸下Windows服务

<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

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

SC删除“YourServiceNameHere”

+0

我遇到了同样的问题 有没有人可以帮我解决这个问题? – User

0

我曾在开发环境中测试相同的WiX的安装程序的多个版本时出现这种情况:

顺便说一句,您可以使用命令propmt命令SC删除“剩”服务。问题是它不能删除一个实体(组件),因为有一个仍然声明的依赖关系。它通常是由于某些注册表键在以前的尝试中遗留下来的。

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

  • 的密钥文件中的分量的ID
  • 组件
  • 目录/文件夹名的GUID(罐包括在\ HKLM \ MS \ WIN \ CURVER \安装\文件夹引用计数)
  • 密钥文件(也引用计数,但不是在文件夹键)
的名称

某些显示名称搜索的键往往位于最近使用的列表或其他良性地点。使用标准注册表时这可能是一个乏味的过程,所以如果你走这条路线,建议使用更好的工具。

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

相关问题