A method for updating a collection of software resources in a virtual desktop infrastructure system, the VDI system including a hierarchy of disk layers (501, 502, 503) and a plurality of virtual machines using software resources of a plurality of disk layers, the method comprising: receiving a plurality of updates for one or more software resources to be deployed to virtual machines in the VDI system; identifying a plurality of virtual machines for a predetermined disk layer in the hierarchy of disk layers on which to apply the plurality of updates; applying the plurality of updates to each virtual machine in the plurality of virtual machines associated with the predetermined disk layer in the hierarchy of disk layers; confirming whether one or more updates in the plurality of updates have been successfully applied to one or more virtual machines in the predetermined disk layer; determining whether to apply one or more updates in the plurality of updates to one or more virtual machines in a subsequent disk layer in the hierarchy of disk layers, wherein: i. when an update in the plurality of updates has been successfully applied to one or more virtual machines in the predetermined disk layer, suspending application of the update to each of the plurality of virtual machines associated with subsequent disk layers in the hierarchy of disk layers; ii. when an update in the plurality of updates has not been successfully applied to one or more virtual machines in the predetermined disk layer, applying the update to each of the plurality of virtual machines associated with the subsequent disk layer in the hierarchy of disk layers. receiving a plurality of updates for one or more software resources to be deployed to virtual machines in the VDI system; identifying a plurality of virtual machines for a predetermined disk layer in the hierarchy of disk layers on which to apply the plurality of updates; applying the plurality of updates to each virtual machine in the plurality of virtual machines associated with the predetermined disk layer in the hierarchy of disk layers; confirming whether one or more updates in the plurality of updates have been successfully applied to one or more virtual machines in the predetermined disk layer; determining whether to apply one or more updates in the plurality of updates to one or more virtual machines in a subsequent disk layer in the hierarchy of disk layers, wherein: i. when an update in the plurality of updates has been successfully applied to one or more virtual machines in the predetermined disk layer, suspending application of the update to each of the plurality of virtual machines associated with subsequent disk layers in the hierarchy of disk layers; ii. when an update in the plurality of updates has not been successfully applied to one or more virtual machines in the predetermined disk layer, applying the update to each of the plurality of virtual machines associated with the subsequent disk layer in the hierarchy of disk layers. i. when an update in the plurality of updates has been successfully applied to one or more virtual machines in the predetermined disk layer, suspending application of the update to each of the plurality of virtual machines associated with subsequent disk layers in the hierarchy of disk layers; ii. when an update in the plurality of updates has not been successfully applied to one or more virtual machines in the predetermined disk layer, applying the update to each of the plurality of virtual machines associated with the subsequent disk layer in the hierarchy of disk layers.