Search code examples
c#wpfformsazure-devopsazure-pipelines

Is there a way to force updates on Windows Desktop applications that are at the customer, using Azure Pipelines?


So I have an WPF-application to which I regularly want to push software-updates to. For this I have used the tool ApplifeUpdate for years but is there a way to do this via Azure Pipelines which would be free for me because our company is a Microsoft Partner.

I know there are tools like NetSparkleUpdater and AutoUpdater.NET but want to explore the posibilites of doing it with a CI/CD tool like Pipelines.


Solution

  • Theoretically yes, but I think it would be highly unlikely your customer would agree to this, definitely fraught with peril, and overall inadvisable.

    Azure Release Pipelines (like any devops tool) is intended for deploying to machines that the pipeline owner controls. It uses an agent installed on the target machines which effectively takes over the computer entirely and runs, well, anything you want it to run.

    There are thus many problems with the idea of using pipelines with customer machines -

    • You don't control them
    • They might not always be on
    • The customer is very unlikely to entrust you with the ability to take over their entire machine at any time.

    This really is a square peg/round hole problem. CAN it be done? Sure. SHOULD it be done? Definitely not.

    I recommend a professional installer/update framework. Squirrel (unaffiliated) is excellent and free and gives you a lot of control of the update process. Installers and update packages can be built (relatively) easily through CI/CD. Then you can use pipelines to post your update package on a public blob or wherever you like, and your customers' installed apps will check for updates and download them autopmatically. That would be a much more sensible use of Azure Pipelines in this context, rather than trying to push anything directly onto your customers' machines.