
在 Windows Server 2012 R2 上安裝內部開發的服務時,系統不知何故進入了 InstallUtil.exe 認為服務既存在又不存在的狀態。根據安裝命令,進程啟動並回滾,並出現錯誤:
System.ComponentModel.Win32Exception:指定的服務已存在
在為 InstallUtil.exe 提供該服務檔案的卸載命令後,該程序最終完成並出現錯誤:
System.ComponentModel.Win32Exception:指定的服務不作為已安裝的服務而存在
事實上,在我嘗試卸載和重新安裝之前,該服務確實存在,儘管我現在在 Powershell 命令 Get-Service、組件檔案和註冊表中都找不到它的蹤跡。我相信這是由編譯軟體中的服務名稱更改觸發的,而無需完全卸載/重新安裝(例如,只需覆蓋可執行檔)。我的問題是,我現在可以做什麼來診斷問題?
答案1
經過尋找並確定原因是:另一個開發人員無意間在專案中新增了第二個服務名稱完全相同的服務安裝程式。 (當然,他沒有測試此變更。)嘗試安裝兩個名稱完全相同的服務的最終結果沒有反映在任何 Windows 或安裝日誌中,也沒有反映在透過命令安裝服務時的命令提示字元中線。
為了做出這個診斷,我自己查看了原始程式碼並更改了服務名稱。重建並安裝時,兩個服務已新增至服務清單。
答案2
就我而言,事實證明我選擇的“Monitor”這個通用名稱實際上已經存在。我想出了一個更具體的名字,一切順利。