Home
%3CLINGO-SUB%20id%3D%22lingo-sub-774553%22%20slang%3D%22en-US%22%3EDevOps%20for%20Desktop%3A%20How%20to%20use%20Self-Hosted%20agent%20for%20Win10%20UWP%20Desktop%20Apps%20in%20Azure%20DevOps%20Pipeline%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-774553%22%20slang%3D%22en-US%22%3E%3CP%3EDefault%20Azure%20DevOps%20Agents%20are%20good%20for%20general%20build%20environments%2C%20such%20as%20below%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20353px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F124565iBEEDC328128CEA32%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%22selfhostagent.png%22%20title%3D%22selfhostagent.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EYou%20can%20get%20details%20of%20the%20environment%20by%20select%20the%20item%20and%20click%20the%20Details%20tab%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20558px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F124567i99419CC7A3B11F92%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%221.png%22%20title%3D%221.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EComparing%20this%20offering%2C%20self-Host%20agent%20is%20convenient%20especially%20your%20projects%20have%20specific%20SDK%20dependencies%20or%20deployment%20targets%20are%20in-house.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EBelow%20guidelines%20are%20based%20on%20my%20experiences%20on%20Continuous%20Integration%2FContinuous%20Deployment%20Centennial%20hybrid%20Desktop%20apps%20(UWP%2C%20WinForm%2C%20.NET%20Core%203).%20which%20should%20work%20for%20most%20similar%20tasks%20requirements.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSTRONG%3EPrepare%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3EGet%20Azure%20DevOps%20personal%20access%20token%20(PAT)%26nbsp%3Bby%20following%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fdevops%2Fpipelines%2Fagents%2Fv2-windows%3Fview%3Dazure-devops%23permissions%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fdevops%2Fpipelines%2Fagents%2Fv2-windows%3Fview%3Dazure-devops%23permissions%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%3ECreate%20one%20Win%2010%20machine%2C%20Win10%20can%20be%20upgraded%20to%2019H1%3C%2FLI%3E%0A%3CLI%3EInstall%20Windows%2010%20SDK%20here%3A%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fdeveloper.microsoft.com%2Fen-US%2Fwindows%2Fdownloads%2Fwindows-10-sdk%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fdeveloper.microsoft.com%2Fen-US%2Fwindows%2Fdownloads%2Fwindows-10-sdk%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%20start%3D%224%22%3E%0A%3CLI%3EInstall%20other%20specific%20SDKs%20if%20you%20need%2C%20for%20example%20Microsoft%20Advertisement%20SDK%3A%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3DAdMediator.MicrosoftAdvertisingSDK%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3DAdMediator.MicrosoftAdvertisingSDK%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%20start%3D%225%22%3E%0A%3CLI%3EInstall%20VS2019%20here%3A%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fvisualstudio.microsoft.com%2Fvs%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fvisualstudio.microsoft.com%2Fvs%2F%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%20start%3D%226%22%3E%0A%3CLI%3EBy%20default%2C%20Windows%2010%20has%20.Net%204.8%20now.%20You%20can%20get%20other%20versions%20if%20necessary%2C%20for%20example%2C%20install%204.6.2%20SDK%3A%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fwww.microsoft.com%2Fen-us%2Fdownload%2Fconfirmation.aspx%3Fid%3D53321%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fwww.microsoft.com%2Fen-us%2Fdownload%2Fconfirmation.aspx%3Fid%3D53321%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%20start%3D%227%22%3E%0A%3CLI%3EDownload%20Agent%20for%20Windows%20according%20to%20the%20step%3A%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fdevops%2Fpipelines%2Fagents%2Fv2-windows%3Fview%3Dazure-devops%23download-and-configure-the-agent%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fdevops%2Fpipelines%2Fagents%2Fv2-windows%3Fview%3Dazure-devops%23download-and-configure-the-agent%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20558px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F124566i156A2A23E18F4064%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%222.png%22%20title%3D%222.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%20start%3D%228%22%3E%0A%3CLI%3EClick%20Download%20Agent%2C%20you%20will%20see%20more%20details%20commands%2C%20execute%20them%20one%20by%20one%3A%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20558px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F124568i7596C7D2C12E588D%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%223.png%22%20title%3D%223.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EYou%20will%20be%20prompted%20to%20input%20server%20url%20and%20PAT%26nbsp%3B%20(personal%20access%20token%2C%26nbsp%3Bit%20is%20generated%20at%20step%201)%20while%20running%20the%20config.cmd%2C%26nbsp%3B%20for%20details%20just%20follow%20this%20part%3A%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fdevops%2Fpipelines%2Fagents%2Fv2-windows%3Fview%3Dazure-devops%23server-url-and-authentication%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fdevops%2Fpipelines%2Fagents%2Fv2-windows%3Fview%3Dazure-devops%23server-url-and-authentication%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSTRONG%3EConnect%26nbsp%3Bthe%20Self-Host%20Agent%20to%20Azure%20DevOps%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EIf%20you%20want%20to%20run%20this%20Agent%20as%20a%20Service%2C%20please%20open%20powershell%20as%20Admin%20permission%2C%20otherwise%20you%20can%20run%20run.cmd%20directly%20to%20read%20job%20running%20status%20in%20Window%2C%20such%20as%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20558px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F124570iCFED460D06B478B3%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%224.png%22%20title%3D%224.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EOnce%20the%20Agent%20is%20running%2C%20it%20will%20read%20environment%20info%20on%20the%20Agent%20host%20computer%20and%20will%20connect%20to%20Azure%20DevOps%20Pipelines%20from%20HTTPS.%20You%20may%20want%20to%20open%20this%20outbound%20connection%20in%20case%20there%20is%20some%20firewall%20blocked%20there.%20Refer%20to%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fdevops%2Fpipelines%2Fagents%2Fv2-windows%3Fview%3Dazure-devops%23im-running-a-firewall-and-my-code-is-in-azure-repos-what-urls-does-the-agent-need-to-communicate-with%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fdevops%2Fpipelines%2Fagents%2Fv2-windows%3Fview%3Dazure-devops%23im-running-a-firewall-and-my-code-is-in-azure-repos-what-urls-does-the-agent-need-to-communicate-with%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EAfter%20setup%20and%20start%20the%20Agent%20successfully%2C%20in%20the%20Agent%20Pool%20you%20select%20in%20config.cmd%2C%20you%20will%20see%20the%20Agent%20status.%20I%20put%20my%20agent%20in%20%E2%80%98Default%E2%80%99%20agent%3C%2FP%3E%0A%3CP%3Epool%20here%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20558px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F124569i1F41B0305E088855%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%225.png%22%20title%3D%225.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSTRONG%3EConfigure%20Build%20pipeline%20to%20run%20job%20on%20the%20self-host%20agent%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EIn%20Build%20Editor%2C%20select%20the%20Pool%20as%20%E2%80%98Default%E2%80%99%2C%20and%20then%20you%20can%20trigger%20it%20by%20committing%20code%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20557px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F124571i34AC70BF56389343%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%226.png%22%20title%3D%226.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSTRONG%3EConfigure%20Releases%20Pipeline%20to%20run%20job%20on%20the%20self-host%20agent%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EIn%20Release%20Editor%2C%20you%20can%20choose%20%E2%80%9CDefault%E2%80%9D%20as%20the%20Agent%20Pool%20as%20well%20in%20UI%2C%20and%20trigger%20it%20by%20previous%20build%20tasks%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20558px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F124572iE1C8362B421AC0E3%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%227.png%22%20title%3D%227.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ENow%20the%20setup%20is%20completed%2C%20you%20can%20use%20your%20own%20agent%20to%20CI%2FCD%26nbsp%3BWindows%20Desktop%20Apps%20in%20customized%20build%20environment%20at%20anytime%20and%20leverage%20the%20power%20of%20Azure%20DevOps%20as%20well!%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F124573i0115A9FC96BB1906%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%22SelfHostAgent_Medium.gif%22%20title%3D%22SelfHostAgent_Medium.gif%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-774553%22%20slang%3D%22en-US%22%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F124573i0115A9FC96BB1906%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%22SelfHostAgent_Medium.gif%22%20title%3D%22SelfHostAgent_Medium.gif%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%20style%3D%22box-sizing%3A%20border-box%3B%20color%3A%20%23333333%3B%20font-family%3A%20%26amp%3Bquot%3B%20segoeui%26amp%3Bquot%3B%2C%26amp%3Bquot%3Blato%26amp%3Bquot%3B%2C%26amp%3Bquot%3Bhelvetica%20neue%26amp%3Bquot%3B%2Chelvetica%2Carial%2Csans-serif%3B%20font-size%3A%2016px%3B%20font-style%3A%20normal%3B%20font-variant%3A%20normal%3B%20font-weight%3A%20300%3B%20letter-spacing%3A%20normal%3B%20orphans%3A%202%3B%20text-align%3A%20left%3B%20text-decoration%3A%20none%3B%20text-indent%3A%200px%3B%20text-transform%3A%20none%3B%20-webkit-text-stroke-width%3A%200px%3B%20white-space%3A%20normal%3B%20word-spacing%3A%200px%3B%20margin%3A%200px%3B%22%3ESelf-Host%20agent%20is%20convenient%20especially%20your%20projects%20have%20specific%20SDK%20dependencies%20or%20deployment%20targets%20are%20in-house.%20This%20article%20is%20based%20on%20my%20experiences%20on%20Continuous%20Integration%2FContinuous%20Deployment%20Centennial%20hybrid%20Desktop%20apps%20(UWP%2C%20WinForm%2C%20.NET%20Core%203).%20which%20should%20work%20for%20most%20similar%20tasks%20requirements.%3C%2FP%3E%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-774553%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EDevOps%20for%20Desktop%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Microsoft

Default Azure DevOps Agents are good for general build environments, such as below:

 

selfhostagent.png

 

You can get details of the environment by select the item and click the Details tab:

 

1.png

 

Comparing this offering, self-Host agent is convenient especially your projects have specific SDK dependencies or deployment targets are in-house.

 

Below guidelines are based on my experiences on Continuous Integration/Continuous Deployment Centennial hybrid Desktop apps (UWP, WinForm, .NET Core 3). which should work for most similar tasks requirements.

 

Prepare

 

  1. Get Azure DevOps personal access token (PAT) by following https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows?view=azure-devops#permissi...
  2. Create one Win 10 machine, Win10 can be upgraded to 19H1
  3. Install Windows 10 SDK here:

https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk

 

  1. Install other specific SDKs if you need, for example Microsoft Advertisement SDK:

https://marketplace.visualstudio.com/items?itemName=AdMediator.MicrosoftAdvertisingSDK

 

  1. Install VS2019 here:

https://visualstudio.microsoft.com/vs/

 

  1. By default, Windows 10 has .Net 4.8 now. You can get other versions if necessary, for example, install 4.6.2 SDK:

https://www.microsoft.com/en-us/download/confirmation.aspx?id=53321

 

  1. Download Agent for Windows according to the step:

https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows?view=azure-devops#download...

 

2.png

 

  1. Click Download Agent, you will see more details commands, execute them one by one:

3.png

 

You will be prompted to input server url and PAT  (personal access token, it is generated at step 1) while running the config.cmd,  for details just follow this part:

https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows?view=azure-devops#server-u...

 

Connect the Self-Host Agent to Azure DevOps

 

If you want to run this Agent as a Service, please open powershell as Admin permission, otherwise you can run run.cmd directly to read job running status in Window, such as:

 

4.png

 

Once the Agent is running, it will read environment info on the Agent host computer and will connect to Azure DevOps Pipelines from HTTPS. You may want to open this outbound connection in case there is some firewall blocked there. Refer to:

 

https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows?view=azure-devops#im-runni...

 

After setup and start the Agent successfully, in the Agent Pool you select in config.cmd, you will see the Agent status. I put my agent in ‘Default’ agent

pool here:

 

5.png

 

Configure Build pipeline to run job on the self-host agent

 

In Build Editor, select the Pool as ‘Default’, and then you can trigger it by committing code:

 

6.png

 

 

Configure Releases Pipeline to run job on the self-host agent

 

In Release Editor, you can choose “Default” as the Agent Pool as well in UI, and trigger it by previous build tasks:

 

7.png

 

Now the setup is completed, you can use your own agent to CI/CD Windows Desktop Apps in customized build environment at anytime and leverage the power of Azure DevOps as well!

 

SelfHostAgent_Medium.gif