2010-05-12 78 views
4

作爲構建的一部分,我們需要能夠將部分窗口服務部署到遠程機器上。 這是一個夜間構建,它將整個應用程序部署到測試環境,因此它必須以某種方式自動執行。TFS 2010:如何將Windows服務作爲構建的一部分進行部署?

對於Web項目,可以使用MSDeploy以及DB服務器。 但是windows服務呢?他們必須停止(如果已經安裝)在目標機器上,然後二進制文件需要被複制,服務必須註冊(如果沒有先前安裝)等,等等...

+0

你有沒有找到這個答案?我正在嘗試做同樣的事情,而我的谷歌正在讓我失望。 – Koby 2010-10-05 16:23:59

回答

1

您可以使用MSDeploy來執行此操作。有一個runCommand提供程序在目標計算機上運行指定的命令。

msdeploy.exe -verb:sync -source:runCommand="net start MyService" -dest:auto 

你可以在這裏閱讀更多: http://technet.microsoft.com/en-us/library/ee619740(WS.10).aspx

+0

還有很多涉及使用TFS的工作 – 2014-04-22 22:20:44

1

我們的方式來實現這一點是在我們的服務器上運行的litte web服務,它監視某個目錄中的新文件。 我們的版本使用臨時名稱將windows服務部署到該文件夾​​,然後將它們重命名爲受監控的名稱模式(「servicename.deployservice.zip」) 部署服務將採用此類文件,將其解壓縮到臨時位置並執行部署的必要步驟(例如,停止舊服務,卸載舊服務,安裝新服務,啓動新服務)。 如果您需要傳輸特殊操作,您可以在部署ZIP文件中添加部署代碼DLL或「構建腳本」。

用最普通的方法完成這種部署代碼的最簡單方法是隻需要在zip文件中設置(msi或其他)的服務並執行該服務。通過這種方式,您可以簡單地將部署設置添加到您的項目中,並且在您的Teambuild中做的事情要少得多......

1

假設您使用的是VS 2010和TFS 2010,那麼您可以修改構建工作流以添加ExecuteProcess活動(在AgentScope目標服務器活動中)運行svcutil.exe,指定服務的名稱。