1. A method for software installation on a client, the method comprising: receiving a list of new software to be installed on the client; performing installation of the new software received on the client; rebooting the client after installation of the new software is completed; restoring all user defined applications on the client to the same state as the user defined applications were prior to the performing the installation.