It was a long time ago I blogged on how to publish a click-once application from a VSTS Build to Azure Blob, long time was passed, and lots of stuff changed. The whole process is now simpler, thanks to many dedicated tasks that avoid doing any manual work.
My new build always start with a GitVersion custom tasks, that populates some environment variables with version numbers generated by GitVersion, this will allow me to simply add an MsBuild task in the build to publish click-once using automatic GitVersion versioning.
Figure 1: MsBuild task to publish click once application
You need to build the csproj that contains the project, using $(BuildConfiguration) to build in the right configuration and adding custom argument arguments (3) as the following list
/target:publish /p:ApplicationVersion=$(AssemblyVersion) /p:PublishURL=https://aaaaaaa.blob.core.windows.net/atest/logviewer/ /p:UpdateEnabled=true /p:UpdateMode=Foreground /p:ProductName=Jarvis.LogViewer
ApplicationVersion is set to variable $(AssemblyVersion) that was populated by GitVersion task, publish Url is a simple address of an azure blob storage, that contains a blob container called atest, with a folder named logviewer that has public read access.
Figure 2: Public read access for a simple blob in my azure subscription
This will allows me to have a simple public blob, with a public address, that everyone can read, so everyone can download my application.
Azure blob can be given a public read access to everyone, making your click-once application available to everyone.
MsBuild task simply creates a app.publish subfolder that contains all the files that needs to be copied into the blob azure storage, the first step is a Copy file Task to copy them in the artifacts directory, as for the following picture.
Figure 3: All files of click-once publishing were copied in the artifacts staging directory.
Now everything is ready, just add a final task of type Azure File Copy and configure to copy everything from artifacts directory to the right subfolder of azure blob.
Figure 4: Configuration of Azure Blob File to deploy click-once generated files.
Configuration is really simple, because thanks to a direct connection to Azure Subscription (3) we can simply connect Azure Dev Ops to an azure subscription so we can simply select storage account (4) blob name (5) and subfolder of the blob (6).
One of the advantage of the dedicated Azure File Copy Task, is that it can simply use one of the Azure account linked to the Azure DevOps account, making super-simple to choose right blob where to upload click-once package.
Once you’ve finished configuration, you can simply run a build and your application will be automatically published.
Figure 5: Summary of the build with click once publishing.
Now you can simply point to the setup.exe file with the address of the blob and the game is done.