2011-05-04 83 views
8

是否有人成功使用MsDeploy通過preSync runCommand部署Windows服務?我已經使用管理員帳戶工作,但無法讓我在一個標準的用戶帳戶上工作。不幸的是,我不能使用集成身份驗證(我們正在部署到一個外部盒子),並且我們的構建服務器上的日誌中顯示的管理員密碼以純文本形式存在,這並不完全令我感到很舒服。對於這個問題,任何用戶證書都沒有 - 但我看不到解決辦法。使用MsDeploy通過preSync命令部署Windows服務

我使用的命令是這樣的:

"tools/deploy/msdeploy.exe" -verb:sync 
-preSync:runCommand="tools\Deploy\PreSyncCommand.cmd",waitInterval=30000 
-source:dirPath="C:\BuiltSourcePath" 
-dest:computerName=https://server:8172/msdeploy.axd?site=dummysitename,userName=service-deploy,password=service-deploy-pass,authType=basic,dirPath="C:\DeployPath\" 
-allowUntrusted 

在IIS中設置爲假網站,以服務部署Windows帳戶認證,擁有的contentPath規則和runCommand權限(爲時刻設置爲C:\,因爲尚不完全清楚這是否需要設置爲MsDeploy流向的臨時路徑或部署路徑?)。服務部署帳戶還完全控制目標目錄。我得到以下回:

Performing '-preSync'... 
Info: Using ID '7a7d34a1-b5d8-49f1-960a-31c9cf825868' for connections to the remote server. 
Info: Using ID '4d0b910c-aca4-4640-84bd-3597d22d99d1' for connections to the remote server. 
Info: Updating runCommand (C:\TeamCity\buildAgent\work\aec989676b349656\tools\De 
ploy\PreSyncCommand.cmd). 
Warning: Access is denied. 
Warning: The process 'C:\Windows\system32\cmd.exe' (command line '/c "C:\Windows 
\ServiceProfiles\LocalService\AppData\Local\Temp\giz2t0kb.0ay.cmd"') exited with 
code '0x1'. 

發生這種情況即使PreSyncCommand.cmd的內容是空白的。如果我傳入管理員憑據,相同的命令運行良好。我試着用ProcessMonitor來檢查是否有任何東西被拒絕訪問,但看不到任何 - 所以我猜它仍然是一個MsDeploy身份驗證規則。 WmSvc.log中沒有任何內容(啓用調試),也沒有在事件日誌中。

任何想法?謝謝!

+2

我已經發布了關於如何做這博客條目:http://www.jamescrowley.co.uk/2011/04/28/deploying-windows- services-using-msdeploy/ – 2011-09-05 16:35:02

+2

上面的James Crowley發佈的博客文章已將其移至[現在](http://www.jamescrowley.co.uk/2011/09/05/deploying-windows-services-using- msdeploy /) – 2012-04-12 13:33:06

回答

13

既然你通過WMSVC使用Web部署,你需要設置相應的委託規則在目標服務器上:

IIS管理器,打開「管理服務委派」功能。添加一條至少指定提供商的新規則。在運行方式部分中,選擇Specific User併爲該計算機上的本地管理員帳戶提供憑據。這是您的run命令腳本將被執行的身份。最後,您要爲目標dirPath指定的用戶需要添加到委託規則中。

這讓你調用使用非特權帳戶部署,並且尚未有它在目標機上根據管理憑據執行

上IIS功能委派的更多信息:http://learn.iis.net/page.aspx/516/configure-the-web-deployment-handler/

+0

謝謝!這是我失蹤的* run as *元素。它現在完美。 – 2011-05-05 08:39:46