1. A method for migrating non-native applications on a computer having a processor and a memory, the method comprising: launching a first Virtual Machine (VM) and a first original guest OS in the VM, on a computing system that has the host OS and a host desktop, wherein the first VM has a non-native application associated with the first VM and the first original guest OS; replacing the first original guest operating system (OS) system in the first VM with a different version of the guest OS; upon a user attempting to launch the non-native application, migrating the non-native application in the first VM to a second VM; launching a second Virtual Machine (VM) and a second original guest OS in the second VM, on the computing system; associating the non-native application with the second VM; determining compatibility of the non-native application with the second original guest OS; launching the non-native application inside the second VM; and displaying a non-native application window to the user.