Citrix XenApp and XenDesktop Rolling Upgrades


Inspired by Marco Hofmann’s My First Time: Citrix Machine Creation Services (MCS) over at CUGC I decided to write a post about his concerns on how to upgrade the Master Image(s) automatically.

The frase Rolling Upgrades was created by Jarian Gibson and has been shared in many of his presentations at my #virtualexpo. During my work with Automation Framework 3.8 I decided it was about time to add support for Rolling Upgrades in my Image Factory.

According to the State of the End User Computing Union Survey 2018 more than 64.52% of the surveyed companies are running VMware vSphere so let’s focus on that.

First of you’ll need to stand up a Microsoft Deployment Server and configure it. The quick fix here is to use my free Automation Framework Community Edition which does all that automatically and even have a couple of hours of training videos.



From the build server (I usally use the MDT server) you’ll need to install VMware PowerCli and Citrix Studio to get the required Powershell snapins.

Then follow the instructions in the Image Factory blog post to configure a static MAC address in CustomSettings.ini to pick the Task Sequence you want for deploying the Master Image(s). This will work, but not optimal because there will be various Master Image VMs with the same MAC address (conflict). You can steal with pride from this Github project to use PSIni and RandomMAC instead.

The trick to get the rest configured is to use the Powershell tab in Citrix Studio. A great tip is to create only 1 machine to keep thing simple. After testing you can quickly add as many VMs as you want.

After running the script for a couple of times it will look like this.

So that’s it. It’s easy to do but if you want something out of the box then the paid version of the Automation Framework is your quick fix.


Automation Framework Community Edition

The fastest way to build your lab environment.

Virtual Expo

Friday 30th of September 2022

2 thoughts on “Citrix XenApp and XenDesktop Rolling Upgrades”

  1. Hello,

    I am trying to use the script in MDT and placed the Settings.xml file under %DeployRoot%\Applications and the script is located in %DeployRoot%\Applications\Scripts.

    When the script is executed it is failing to find the XML file to read the variables.

    Are you able to shed any light as to how the below is used.

    $MyConfigFileloc = (“$env:Settings\Applications\Settings.xml”)
    [xml]$MyConfigFile = (Get-Content $MyConfigFileLoc)



Leave a Comment