IP Library Granted Patent US 9,864,600
Granted Patent B2
US 9,864,600 · App. 14/452,382 · Granted Jan 9, 2018

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/54G06F9/544G06F11/1433G06F12/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,864,600
App. No.
14/452,382
Granted
Jan 9, 2018
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 (64)

1. A method of executing one or more virtual applications from a single executable file, the method comprising:

receiving a character string comprising a first parameter, a second 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 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;

passing at least a portion of the character string to the executing process when the executing process is determined not to be the first process; and

when the executing process is determined to be the first process, parsing the character string to obtain the first and second parameters, identifying a particular one of the plurality of startup files, and executing the particular startup file, wherein identifying the particular startup file comprises:

determining the second parameter is a candidate trigger when the first parameter has a predetermined format,

determining one of the plurality of startup files associated with the candidate trigger is the particular startup file when the candidate trigger is a member of a triggers list, and

determining a predetermined one of the plurality of startup files is the particular startup file when the candidate trigger is not a member of the triggers list.

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

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

executing the one or more additional startup files.

3. The method of claim 1 , wherein the character string is received from a user who entered the character string into a command prompt.

4. A non-transitory computer-readable medium comprising instructions that when executed by a processor perform a method of executing one or more virtual applications from a single executable file, the method comprising:

receiving a character string comprising a first parameter, a second 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 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;

passing at least a portion of the character string to the executing process when the executing process is determined not to be the first process; and

when the executing process is determined to be the first process, parsing the character string to obtain the first and second parameters, identifying a particular one of the plurality of startup files, and executing the particular startup file, wherein identifying the particular startup file comprises:

determining the second parameter is a candidate trigger when the first parameter has a predetermined format,

determining one of the plurality of startup files associated with the candidate trigger is the particular startup file when the candidate trigger is a member of a triggers list, and

determining a predetermined one of the plurality of startup files is the particular startup file when the candidate trigger is not a member of the triggers list.

5. The computer-readable medium of claim 4 , wherein the method further comprises, when the executing process is determined to be the first process:

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

executing the one or more additional startup files.

6. The computer-readable medium of claim 4 , wherein the character string was entered by a user at a command prompt.

7. A method comprising:

receiving a character string comprising a plurality of parameters 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, the plurality of parameters comprising first and second parameters;

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 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;

passing at least a portion of the character string to the executing process when the executing process is determined not to be the first process; and

when the executing process is determined to be the first process, parsing the character string to obtain the plurality of parameters, identifying one or more of the plurality of startup files, and executing the identified one or more startup files, wherein identifying the one or more startup files comprises:

determining the second parameter is a candidate trigger when the first parameter has a predetermined format,

determining at least one of the plurality of startup files associated with the candidate trigger is the identified one or more startup files when the candidate trigger is a member of a triggers list, and

determining a predetermined one or more of the plurality of startup files are the identified one or more startup files when the candidate trigger is not a member of the triggers list.

8. The method of claim 7 , wherein the character string is received from a user who entered the character string into a command prompt.

9. A system comprising one or more processors configured to execute instructions that when executed by the one or more processors perform a method comprising:

receiving a character string comprising a first parameter, a second 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 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;

passing at least a portion of the character string to the executing process when the executing process is determined not to be the first process; and

when the executing process is determined to be the first process, parsing the character string to obtain the first and second parameters, identifying a particular one of the plurality of startup files, and executing the particular startup file, wherein identifying the particular startup file comprises:

determining the second parameter is a candidate trigger when the first parameter has a predetermined format,

determining one of the plurality of startup files associated with the candidate trigger is the particular startup file when the candidate trigger is a member of a triggers list, and

determining a predetermined one of the plurality of startup files is the particular startup file when the candidate trigger is not a member of the triggers list.

10. The system of claim 9 , wherein the method further comprises, when the executing process is determined to be the first process:

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

executing the one or more additional startup files.

11. The system of claim 9 , wherein the character string was entered by a user at a command prompt.

12. A system comprising one or more processors configured to execute instructions that when executed by the one or more processors perform a method comprising:

receiving a character string comprising a plurality of parameters 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, the plurality of parameters comprising first and second parameters;

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 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;

passing at least a portion of the character string to the executing process when the executing process is determined not to be the first process; and

when the executing process is determined to be the first process, parsing the character string to obtain the plurality of parameters, identifying one or more of the plurality of startup files, and executing the identified one or more startup files, wherein identifying the one or more startup files comprises:

determining the second parameter is a candidate trigger when the first parameter has a predetermined format,

determining at least one of the plurality of startup files associated with the candidate trigger is the identified one or more startup files when the candidate trigger is a member of a triggers list, and

determining a predetermined one or more of the plurality of startup files are the identified one or more startup files when the candidate trigger is not a member of the triggers list.

13. The method of claim 12 , wherein the character string is received from a user who entered the character string into a command prompt.

Assignments (2)
ADDRESS CHANGE Recorded Nov 10, 2015
From: CODE SYSTEMS CORPORATION
To: CODE SYSTEMS CORPORATION
Reel/Frame 037084/0283 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 5, 2014
From: LARIMORE, STEFAN I.; MURPHEY, C. MICHAEL; OBATA, KENJI C.
To: CODE SYSTEMS CORPORATION
Reel/Frame 033469/0992 →
Continuity (3)
Continuation 13866682 · Apr 19, 2013
Division 12188161 · Aug 7, 2008
Related Publication 20140351516A1 · Nov 27, 2014