IP Library Granted Patent US 10,409,627
Granted Patent B2
US 10,409,627 · App. 14/789,858 · Granted Sep 10, 2019

System for downloading and executing virtualized application files identified by unique file identifiers

Inventors: Kenji C. Obata (Seattle, WA); Mark Zeller (Seattle, WA)
Assignee: CODE SYSTEMS CORPORATION
G06F9/45558G06F8/61G06F9/44536G06F16/188H04L67/10G06F2009/4557G06F2009/45579G06F2009/45595
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 10,409,627
App. No.
14/789,858
Granted
Sep 10, 2019
Kind
B2
Abstract

A virtual process manager for use with a client application. Both the virtual process manager and the client application are installed on a client computing device. The client application is configured to receive a user command to execute a virtual application at least partially implemented by a virtualized application file stored on a remote computing device. In response to the user command, the client application commands to the virtual process manager to execute the virtualized application file. Without additional user input, the virtual process manager downloads the virtualized application file from the remote computing device and executes the virtual application at least partially implemented by the downloaded virtualized application file on the client computing device. The client application may comprise a conventional web browser or operating system shell process.

Claims (73)

1. A method of downloading a plurality of virtualized application files used to execute a virtual application, the method being performed by a first computing device in communication with a second computing device over a network, the first computing device having a client application and a virtual process manager executing thereon, the second computing device storing the plurality of virtualized application files, the method comprising:

at the client application, receiving a plurality of user commands to download and execute the plurality of virtualized application files stored on the second computing device, each of the plurality of virtualized application files at least partially implementing the virtual application;

in response to receiving the plurality of user commands, the client application sending a plurality of first commands to the virtual process manager, each of the plurality of first commands identifying at least one of the plurality of virtualized application files and instructing the virtual process manager to download the at least one virtualized application file from the second computing device to the first computing device;

at the virtual process manager, receiving the plurality of first commands sent by the client application;

in response to receiving the plurality of first commands:

the virtual process manager automatically determining that a first portion of the plurality of virtualized application files identified by the plurality of first commands were fully downloaded to the first computing device prior to the client application receiving the plurality of user commands, each virtualized application file in the first portion being associated with a previously generated unique file identifier,

the virtual process manager automatically determining that a second portion of the plurality of virtualized application files identified by the plurality of first commands were not fully downloaded to the first computing device prior to the client application receiving the plurality of user commands,

the virtual process manager automatically generating, for each virtualized application file in the second portion of the plurality of virtualized application files, a new unique file identifier and associating the new unique file identifier with the virtualized application file, the previously generated and new unique file identifiers being a plurality of unique identifiers,

the virtual process manager sending the plurality of unique identifiers to the client application, and

the virtual process manager automatically downloading the second portion of the plurality of virtualized application files;

in response to receiving the plurality of unique identifiers and during the downloading of the second portion of the plurality of virtualized application files, the client application requesting download statuses from the virtual process manager for the plurality of virtualized application files identified in the plurality of first commands by sending status inquires to the virtual process manager, each of the status inquiries including one of the plurality of unique identifiers;

providing, by the virtual process manager, the download statuses to the client application in response to the virtual process manager receiving the status inquiries;

at the client application, determining that the plurality of virtualized application files have finished downloading based on the download statuses received in response to the status inquiries, and sending, to the virtual process manager, a plurality of second commands; and

in response to receiving the plurality of second commands sent by the client application, the virtual process manager automatically executing the virtual application.

2. The method of claim 1 , further comprising:

in response to receiving each of the plurality of first commands sent by the client application, the virtual process manager identifying a virtual machine application configured to execute the at least one virtualized application file identified by the first command, the virtual process manager executing the virtual application at least partially implemented by the at least one virtualized application file identified by the first command by executing the identified virtual machine application, and instructing the identified virtual machine application to execute the at least one virtualized application file identified by the first command.

3. The method of claim 1 , wherein

in response to each of the status inquires, the virtual process manager determines status information for the at least one virtualized application file associated with the one of the plurality of unique identifiers included in the status inquiry, and sends the status information to the client application to thereby provide one of the download statuses to the client application.

4. The method of claim 3 , wherein the status information comprises a status code or a progress value.

5. The method of claim 1 , further comprising:

after receiving each of the plurality of user commands, the client application requesting a session with the virtual process manager, and in response to each session request, the virtual process manager initiating a session with the client application and generating a session identifier, the session identifier being the new unique file identifier generated by the virtual process manager for one of the second portion of the plurality of virtualized application files.

6. The method of claim 5 , wherein the session is a Transmission Control Protocol (“TCP”) session.

7. The method of claim 1 , further comprising:

at the client application, receiving a new user command to execute one or more of the plurality of virtualized application files stored on the second computing device after the client application has determined that each of the second portion of the plurality of virtualized application files has finished downloading;

in response to the new user command, the client application sending a new download command to the virtual process manager, the new download command identifying the one or more virtualized application files and instructing the virtual process manager to download the one or more virtualized application files from the second computing device;

at the virtual process manager, receiving the new download command sent by the client application;

the virtual process manager determining without additional user input that the one or more virtualized application files were fully downloaded previously; and

not downloading of the one or more virtualized application files in response to the new download command.

8. The method of claim 1 , further comprising:

before the virtual process manager begins automatically downloading each virtualized application file of the second portion of the plurality of virtualized application files, the virtual process manager determining whether the virtualized application file was partially downloaded previously, and if the virtualized application file was partially downloaded previously, the virtual process manager downloading only a portion of the virtualized application file that was not previously downloaded.

9. The method of claim 1 , wherein the client application comprises a web browser.

10. The method of claim 1 for use with the first computing device having an operating system, wherein the client application comprises an operating system shell process implemented by the operating system of the first computing device.

11. A non-transitory computer-readable medium comprising instructions that when executed by a processor implement a virtual process manager configured to receive commands from a client application, the virtual process manager being configured to:

receive a plurality of first commands from the client application to download a plurality of virtualized application files used to execute a virtual application, each of the plurality of first commands identifying at least one of the plurality of virtualized application files and instructing the virtual process manager to download the at least one virtualized application file;

in response to receiving the plurality of first commands:

automatically determine that a first portion of the plurality of virtualized application files identified by the plurality of first commands were fully downloaded previously, each virtualized application file in the first portion being associated with a previously generated unique file identifier,

automatically determine that a second portion of the plurality of virtualized application files identified by the plurality of first commands were not fully downloaded previously,

automatically generate a new unique file identifier for each virtualized application file in the second portion of the plurality of virtualized application files, and associate the new unique file identifier with the virtualized application file for which the new unique file identifier was generated, the previously generated and new unique file identifiers being a plurality of unique identifiers,

send the plurality of unique identifiers to the client application, and

automatically download the second portion of the plurality of virtualized application files;

receive status inquiries from the client application in response to sending the plurality of unique identifiers to the client application and during the downloading of the second portion of the plurality of virtualized application files, each of the status inquiries including one of the plurality of unique identifiers;

provide download statuses to the client application in response to the status inquiries, the client application being configured to determine when the plurality of virtualized application files have finished downloading based on the download statuses and to send a plurality of second commands to the virtual process manager after the client application determines that the plurality of virtualized application files have finished downloading, the plurality of second commands instructing the virtual process manager to execute the virtual application; and

automatically execute the virtual application in response to receiving the plurality of second commands.

12. The non-transitory computer-readable medium of claim 11 , wherein in response to receiving each of the plurality of first commands from the client application, the virtual process manager is configured to:

identify a virtual machine application configured to execute the at least one virtualized application file identified by the first command, wherein automatically executing the virtual application comprises executing the identified virtual machine application, and instructing the identified virtual machine application to execute the at least one virtualized application file identified by the first command.

13. The non-transitory computer-readable medium of claim 11 , wherein in response to each of the status inquires, the virtual process manager is configured to:

determine status information for the at least one virtualized application file associated with the one of the plurality of unique identifiers included in the status inquiry; and

send the status information to the client application to thereby provide one of the download statuses to the client application.

14. The non-transitory computer-readable medium of claim 13 , wherein the status information comprises a status code or a progress value.

15. The non-transitory computer-readable medium of claim 11 , wherein the virtual process manager is configured to receive session requests from the client application, each of the session requests requesting a session with the virtual process manager, and

in response to each of the session requests, the virtual process manager is configured to initiate a session with the client application and generate a session identifier, the session identifier being the new unique file identifier generated by the virtual process manager for one of the second portion of the plurality of virtualized application files.

16. The non-transitory computer-readable medium of claim 15 , wherein the session is a Transmission Control Protocol (“TCP”) session.

17. The non-transitory computer-readable medium of claim 11 , wherein

before the virtual process manager begins automatically downloading each virtualized application file of the second portion of the plurality of virtualized application files, the virtual process manager is configured to determine whether the virtualized application file was partially downloaded previously, and if the virtualized application file was partially downloaded previously, the virtual process manager downloads only a portion of the virtualized application file that was not previously downloaded.

18. A method of downloading a plurality of virtualized application files used to execute a virtual application, the method being performed by a first computing device in communication with a second computing device over a network, the first computing device having a client application and a virtual process manager executing thereon, the second computing device storing the plurality of virtualized application files, the method comprising:

receiving, by the virtual process manager, a plurality of first commands from the client application to download the plurality of virtualized application files, each of the plurality of first commands identifying at least one of the plurality of virtualized application files and instructing the virtual process manager to download the at least one virtualized application file;

in response to receiving the plurality of first commands, the virtual process manager:

automatically determining that a first portion of the plurality of virtualized application files identified by the plurality of first commands were fully downloaded previously, each virtualized application file in the first portion being associated with a previously generated unique file identifier,

automatically determining that a second portion of the plurality of virtualized application files identified by the plurality of first commands were not fully downloaded previously,

automatically generating a new unique file identifier for each virtualized application file in the second portion of the plurality of virtualized application files, and associating the new unique file identifier with the virtualized application file for which the new unique file identifier was generated, the previously generated and new unique file identifiers being a plurality of unique identifiers,

sending the plurality of unique identifiers to the client application, and

automatically downloading the second portion of the plurality of virtualized application files;

receiving, by the virtual process manager, status inquiries from the client application in response to sending the plurality of unique identifiers to the client application and during the downloading of the second portion of the plurality of virtualized application files, each of the status inquiries including one of the plurality of unique identifiers;

providing, by the virtual process manager, download statuses to the client application in response to the status inquiries, the client application being configured to determine when the plurality of virtualized application files have finished downloading based on the download statuses and to send a plurality of second commands to the virtual process manager after the client application determines that the plurality of virtualized application files have finished downloading, the plurality of second commands instructing the virtual process manager to execute the virtual application; and

automatically executing, by the virtual process manager, the virtual application in response to receiving the plurality of second commands.

19. The method of claim 18 , wherein in response to receiving each of the plurality of first commands from the client application, the virtual process manager identifies a virtual machine application configured to execute the at least one virtualized application file identified by the first command, wherein automatically executing the virtual application comprises executing, by the virtual process manager, the identified virtual machine application, and instructing the identified virtual machine application to execute the at least one virtualized application file identified by the first command.

20. The method of claim 18 , wherein in response to each of the status inquires, the virtual process manager determines status information for the at least one virtualized application file associated with the one of the plurality of unique identifiers included in the status inquiry; and

sends the status information to the client application to thereby provide one of the download statuses to the client application.

21. The method of claim 20 , wherein the status information comprises a status code or a progress value.

22. The method of claim 18 , wherein the virtual process manager receives session requests from the client application, each of the session requests requesting a session with the virtual process manager, and

in response to each of the session requests, the virtual process manager initiates a session with the client application and generates a session identifier, the session identifier being the new unique file identifier generated by the virtual process manager for one of the second portion of the plurality of virtualized application files.

23. The method of claim 22 , wherein the session is a Transmission Control Protocol (“TCP”) session.

24. The method of claim 18 , wherein before the virtual process manager begins automatically downloading each virtualized application file of the second portion of the plurality of virtualized application files, the virtual process manager determines whether the virtualized application file was partially downloaded previously, and if the virtualized application file was partially downloaded previously, the virtual process manager downloads only a portion of the virtualized application file that was not previously downloaded.

Assignments (3)
ADDRESS CHANGE Recorded Nov 10, 2015
From: CODE SYSTEMS CORPORATION
To: CODE SYSTEMS CORPORATION
Reel/Frame 037084/0283 →
CHANGE OF ADDRESS Recorded Jul 29, 2015
From: CODE SYSTEMS CORPORATION
To: CODE SYSTEMS CORPORATION
Reel/Frame 036224/0819 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 27, 2015
From: OBATA, KENJI C.; ZELLER, MARK JEREMY
To: CODE SYSTEMS CORPORATION
Reel/Frame 036188/0104 →
Continuity (2)
Continuation 12695107 · Jan 27, 2010
Related Publication 20150301852A1 · Oct 22, 2015