Patent ID: 9207934
Filing Date: 2015-12-08
Classification: G06F

Abstract:
1. A method of executing one or more virtual applications from a single executable file on a computing device, the computing device storing software components accessible by other processes executing on the computing device, the software components being identified in a manifest including a public key token associated with the software components, the manifest being configured to receive calls to the software components and direct them to the software components, the method comprising: receiving, by the computing device, a character string comprising a parameter and an identification of an executable file implementing a plurality of virtual applications, the executable file comprising a plurality of startup files each corresponding to one of the plurality of virtual applications; executing, by the computing device, a process of the executable file; determining, by the computing device, whether the executing process is a first process of the executable file to be executed based on the presence or absence of a data structure associated with the executable file in a shared memory; allocating, by the computing device, a data structure in a shared memory associated with the executing process; parsing, by the computing device, the character string to obtain the parameter; identifying, by the computing device, which of the plurality of startup files to execute based on the parameter; executing, by the computing device, the identified startup file to thereby execute at least a particular one of the plurality of virtual applications, the particular virtual application being isolated from the other processes executing on the computing device; creating, by the computing device, a private memory cache for the particular virtual application; storing, by the computing device, copies of the software components in the private memory cache; mapping a location on the computing device in which the software components are stored to a location in the private memory cache in which the copies of the software components are stored; receiving a request from the particular virtual application for the location on the computing device in which the software components are stored; intercepting the request; after intercepting the request, returning the location on the computing device in which the software components are stored instead of the location in the private memory cache in which the copies of the software components are stored; creating a private copy of the manifest, the private copy of the manifest omitting the public key token associated with the software components, the private copy of the manifest being configured to direct calls to the software components to the copies of the software components stored in the private memory cache; intercepting calls by the particular virtual application to the software components; and directing the intercepted calls to the private copy of the manifest.