質問

NserviceBusを使用してイベントを公開するWebサイトがあります。サイトはMSDEPLOYを使用して展開されています。また、これらのイベントを購読するためのWindowsサービスとして実行されるはずのnservicebus.exeもあり、それも展開したいと思います。

ウェブサイトだけでなくサービスもパッケージ化する方法はありますか?別のサーバーに展開できるように、個別にパッケージ化することは可能ですか?

今すぐウェブサイトの自動展開を行うことができるため、これを行う方法に関する情報を見つける場所に関するヒントは素晴らしいでしょう。

役に立ちましたか?

解決

私は最近、msdeploy、phantom、installutil.exeを使用してこれを行いました

基本的に、インストーラークラスを変更し、必要に応じてリモートWMSVCサービスの特権を高める必要があります。

ブログへのリンク

他のヒント

私たちがやっているのは、展開タスクを調整する「コントローラー」レイヤーを作成することでした。本質的に、MSDEPLOYは展開システムで最高レベルの抽象化ではありません。

MSBuildを使用して、「パッケージ」からアイテムを展開するタスクを調整することを選択しました。

展開プロセスでは、MSDEPLOYで展開されたWebアプリケーションは、Windowsサービスと同様に、もう1つの展開アイテムにすぎません。

すべての開示において、MSBuildがMSDEPLOYを呼び出すため、実際にMSDEPLOY展開タスクをまだ作成していませんが、すでに作成したものに適切にドロップする必要があります。現在、MSBuildを介して調整されたWebApp Deployment AutomationにMSBuildコミュニティタスクを使用しています。

私が電話したブログ投稿を介して展開をどのように「一般化」したかについてもう少し読むことができます」Panda-パッケージングと展開の自動化".

これは、私が私の中のビルド後のステップから作成されたアーカイブビーチャーを同期するために使用したMSDEPLOY CMDラインです Windows Service.proj ファイル。

ビルドサーバーから別のネットワーク上のアプリサーバーに同期しています。リモートサーバーのサービスを開始および停止するビルドステップを事前に投稿しています。 PowerShellとMSDeployとのバグのため、VBスクリプトでPowerShellスクリプトをラップする必要があります。 -verbose オプションは非常に役立ちます。

また、以下にVBScriptとPS1スクリプトもあります。 VBスリープおよびMSDEPLOYのタイムアウト前後のタイムアウトに注意してください。

msdeploy -verb:sync -source:archivedir=\\qa-xxxxx1.qa.lan\deployment\backups\FreddieMacDelivery\FreddieMacDelivery.zip,tempAgent='True',computerName=qa-xxxxx1.qa.lan,userName=QA\xxxxx,password=xxxx,authtype=NTLM,includeAcls='False' -dest:dirpath=\\qa-xxxxxx1.qa.lan\protk\Services\FreddieMacDelivery\1.4.1.test -useCheckSum -verbose -preSync:runCommand="cscript.exe c:\temp\stop_win_svc.vbs" -postSync:runCommand="c:\temp\start_win_svc.vbs",waitInterval=15000,waitAttempts=1

VBスクリプト:

Option Explicit
Dim oShell, appCmd,oShellExec
Set oShell = CreateObject("WScript.Shell")

appCmd = "powershell.exe -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ""&c:/temp/Get_Win_SVC.ps1"" "

Set oShellExec = oShell.Exec(appCmd)

WScript.Sleep 1000
oShellExec.StdIn.Close()

PowerShellスクリプト:

$username = 'QA\xxxxx'
$password = 'xxxxx'
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))

(Get-WmiObject  -computer qa-xxxx1.qa.lan  -Credential $cred Win32_Service -Filter "Name='ProTeck.FreddieMac.DeliveryService'")


$svc = (Get-WmiObject  -computer qa-xxxxx1.qa.lan  -Credential $cred Win32_Service -Filter "Name='ProTeck.FreddieMac.DeliveryService'") 

Write-Host  $svc

$svc.InvokeMethod("StartService", $null)


(Get-WmiObject  -computer qa-xxxxx1.qa.lan  -Credential $cred Win32_Service -Filter "Name='ProTeck.FreddieMac.DeliveryService'")> c:\temp\win_stat_post.txt
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top