我寫Delphi應用程序(基本上是爲了管理的服務的圖形用戶界面,它具有以下特徵:允許用戶設置了由服務使用的一些參數和啓動/停止/取消安裝/安裝新版本)。 因此,所有的功能中有一個「不檢點」:在某一點上的應用程序會嘗試卸載和安裝服務的新版本。指定的服務標記爲刪除上Delphi應用程序
隨着ShellExecute
我運行以下命令:
C:\myPath\myService.exe /Uninstall
C:\myPath\myService.exe /Install // this is tipically done to install a newer version of it
如果該服務已經在運行它成功地卸載了(我得到「成功地卸載」消息),但如果我打開SERVICES.MSC我看到我的服務仍然在服務列表中,但從其popup菜單中禁用了啓動和停止(雖然我希望它沒有列出)。
在這一刻,如果我嘗試安裝,我得到以下錯誤的服務: 「指定的服務被標記爲刪除」
需要注意的是,如果我運行卸載和命令安裝命令提示卸載很好,服務不在services.msc列表中。注意:在這種情況下,我的意思是根本不使用Delphi(或編譯的exe)。
我嘗試了很多技巧,包括卸載後放置一個Sleep(10000)
,但它沒有工作我也試圖保持services.msc關閉(因爲我讀它可能是一個問題,讓它打開)。
我發現了一個成功的竅門使用以下步驟:
1)我把一個斷點剛剛從德爾福
調用卸載後2)我去SERVICES.MSC:該服務仍處於列表,即使在「刷新」是STIL列表
3)我打破(從IDE:CTRL + F2)應用
4)我在SERVICES.MSC再去我點擊的exceution 「刷新」按鈕:因爲它,myservice將從列表中刪除應該是
所以我懷疑德爾福XE2(無論是在IDE中調試或運行EXE)以某種方式「鎖定服務」,不允許它被完全卸載。
注:該服務使用另一個德爾福項目建成!
你能幫助我理解由ShellExecute
做確實給這個錯誤,爲什麼服務卸載?
非常感謝。
重要提示: 我忘了提及我使用IDE和cmd.exe作爲管理員。
停止該服務,然後將其卸載(淨停止「yourservicename」) – whosrdaddy
是的,我停止它,即使不使用淨停止,但使用WinSvc方式 – LaBracca
也與淨停止我得到了相同.... – LaBracca