簡體   English   中英

在開發過程中安裝/卸載Windows服務

[英]install/uninstall of windows services during development

我想知道是否有一種更簡單的方法可以在不創建安裝程序包的情況下將Windows服務安裝或卸載到開發人員或測試環境中? 有時我在卸載Visual Studio軟件包時遇到問題(即使在停止服務並關閉服務管理控制台之后再卸載,這迫使我重新啟動計算機)。 通過使用InstallShield或WIX之類的工具來創建安裝程序包可以解決此問題,但是在開發過程中,如果我可以在開發環境或測試環境中安裝服務(以及所有相關文件),而無需創建安裝程序包,將更加容易。

使用installutil ,它是.net框架的一部分。 現在,您仍然需要將bin目錄復制到所需的計算機上,並注冊任何COM對象(如果使用任何COM對象)。

如果沒記錯的話(目前無法訪問我的開發機器)。 停止服務-並替換exe和dll)重新啟動服務。 您可以編寫腳本。 您將需要進行初始安裝,或使用installutil.exe

我發現這始終比安裝和卸載容易得多。

我發現SC.EXE命令在開發過程中易於使用。 將其拍打成NAnt / BuildBuild / Perl / BAT文件並立即實現輕量級自動化。

我知道這是一個古老的問題,但我認為此信息與任何在此問題上苦苦掙扎的人都非常相關:

問題來自Visual Studio中包含的安裝程序的更改。 我認為VS2005和VS2008之間發生了更改。 無論如何,在進行更改之后,要使更新安裝程序正常運行而無需卸載先前的產品,建議在“安裝”,“提交和回滾”階段而不是“卸載”階段通過“自定義操作”安裝服務。 我相信這是因為更改導致卸載操作在安裝新版本后發生,並在更新時卸載了服務。 在三個自定義操作上放置了條件“ Not PREVIOUSVERSIONSINSTALTAL”,並且“檢查以前的版本”必須為TRUE。 這產生的結果與在舊文件上復制文件的結果基本相同(但也保留了其他任何安裝活動,例如注冊對象等)。

所有這些都非常適合更新; 新版本將安裝在現有版本之上,該服務保持注冊狀態,一切正常。 但是,如果您卸載,則您的服務將保持注冊狀態,並且全新安裝將嘗試再次注冊它,從而導致1001錯誤。 為避免這種情況,我在卸載時使用SC.EXE手動刪除了服務。 您可以進行干凈的卸載,但是這會中斷您的更新安裝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM