1. A computer-implemented method for preparing an application for virtualization, comprising: detecting, by a computing device, an initiation of an installation of an application to be virtualized; in response to detection of the initiation of the installation of the application to be virtualized, identifying, by a core virtualization system executing on the computing device, a plurality of registered virtualization subsystems from a store of virtualization subsystems; based on the identification of the plurality of registered virtualization subsystems, programmatically determining, by the core virtualization system executing on the computing device, a virtualization subsystem to monitor the installation, including iteratively: selecting target virtualization subsystem from the plurality of registered virtualization subsystems; notifying the iteratively selected target virtualization subsystem of the initiation of the installation; and establishing whether the iteratively selected target virtualization subsystem is to monitor the installation; monitoring, by the determined virtualization subsystem, the installation, including: collecting configuration information associated with the application to be virtualized, the configuration information including at least some configuration information that is specific to the determined virtualization subsystem; and storing, by the computing device, the collected configuration information in an application package associated with the application to be virtualized.