2011-09-06 133 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 \安裝\文件夾引用計數)
  • 密鑰文件(也引用計數,但不是在文件夾鍵)
的名稱

某些顯示名稱搜索的鍵往往位於最近使用的列表或其他良性地點。使用標準註冊表時這可能是一個乏味的過程,所以如果你走這條路線,建議使用更好的工具。

理想情況下,您應該測試可以恢復到以前狀態的計算機上的安裝程序。

相關問題