IP Library Granted Patent US 9,164,760
Granted Patent B2
US 9,164,760 · App. 13/866,682 · Granted Oct 20, 2015

Method and system for virtualization of software applications

Inventors: Stefan I. Larimore (Redmond, WA); C. Michael Murphey (Seattle, WA); Kenji C. Obata (Seattle, WA)
Assignee: CODE SYSTEMS CORPORATION
G06F8/71G06F9/44505G06F9/455G06F9/48G06F9/544G06F12/0813
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,164,760
App. No.
13/866,682
Granted
Oct 20, 2015
Kind
B2
Abstract

A method of virtualizing an application to execute on a plurality of operating systems without installation. The method includes creating an input configuration file for each operating system. The templates each include a collection of configurations that were made by the application during installation on a computing device executing the operating system. The templates are combined into a single application template having a layer including the collection of configurations for each operating system. The collection of configurations includes files and registry entries. The collections also identifies and configures environmental variables, systems, and the like. Files in the collection of configurations and references to those files may be replaced with references to files stored on installation media. The application template is used to build an executable of the virtualized application. The application template may be incorporated into a manifest listing other application templates and made available to users from a website.

Claims (67)

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.

2. The method of claim 1 , further comprising, when the executing process is determined to be the first process of the executable file to be executed:

identifying one or more additional startup files to be executed; and

executing the one or more additional startup files.

3. A non-transitory computer-readable medium comprising instructions that when executed by one or more processors of a computing device perform a method of executing one or more virtual applications from a single executable file, 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 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 a process of the executable file;

determining 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 a data structure in a shared memory associated with the executing process;

parsing the character string to obtain the parameter;

identifying which of the plurality of startup files to execute based on the parameter; and

executing 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 a private memory cache for the particular virtual application;

storing 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.

4. A method of incorporating software components into a virtual application isolated from other processes executing on a computing device, the software components being accessible by the 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:

creating a private memory cache for the virtual application;

storing 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 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 virtual application to the software components; and

directing the intercepted calls to the private copy of the manifest.

5. The method of claim 4 , wherein the request is a first request, and the method further comprises:

mapping a location on the computing device in which the manifest is stored to a location in which the private copy of the manifest is stored;

receiving a second request from the virtual application for the location on the computing device in which the manifest is stored;

intercepting the second request; and

after intercepting the second request, returning the location on the computing device in which the manifest is stored instead of the location in which the private copy of the manifest is stored.

6. The non-transitory computer-readable medium of claim 5 , wherein the request is a first request, and the method further comprises:

mapping a location on the computing device in which the manifest is stored to a location in which the private copy of the manifest is stored;

receiving a second request from the virtual application for the location on the computing device in which the manifest is stored;

intercepting the second request; and

after intercepting the second request, returning the location on the computing device in which the manifest is stored instead of the location in which the private copy of the manifest is stored.

7. A non-transitory computer-readable medium comprising instructions that when executed by one or more processors of a computing device perform a method of incorporating software components into a virtual application isolated from other processes executing on the computing device, the software components being accessible by the 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:

creating a private memory cache for the virtual application;

storing 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 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 virtual application to the software components; and

directing the intercepted calls to the private copy of the manifest.

Assignments (3)
ADDRESS CHANGE Recorded Nov 10, 2015
From: CODE SYSTEMS CORPORATION
To: CODE SYSTEMS CORPORATION
Reel/Frame 037084/0283 →
CHANGE OF ADDRESS Recorded May 28, 2015
From: CODE SYSTEMS CORPORTATION
To: CODE SYSTEMS CORPORATION
Reel/Frame 035794/0628 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 19, 2013
From: LARIMORE, STEFAN I.; MURPHEY, C. MICHAEL; OBATA, KENJI C.
To: CODE SYSTEMS CORPORATION
Reel/Frame 030255/0328 →
Continuity (2)
Division 12188161 · Aug 7, 2008
Related Publication 20130247070A1 · Sep 19, 2013