IP Library Granted Patent US 7,870,153
Granted Patent B2
US 7,870,153 · App. 11/624,394 · Granted Jan 11, 2011

Methods and systems for executing, by a virtual machine, an application program requested by a client machine

Assignee: Citrix Systems, Inc.
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 7,870,153
App. No.
11/624,394
Granted
Jan 11, 2011
Kind
B2
Abstract

A method for executing, by a virtual machine, an application program requested by a client machine includes the step of receiving a file including access information for accessing a plurality of application files and for executing a first client capable of receiving an application stream. An identification of the plurality of application files is retrieved, responsive to the received file. At least one characteristic required for execution of the plurality of application files is retrieved, responsive to the file. A determination is made as to whether a client machine includes the at least one characteristic. A second client is executed, responsive to a determination that the client machine lacks the at least one characteristic, the second client requesting execution of the plurality of application files on a remote machine comprising a virtual machine providing a computing environment having the at least one characteristic.

Claims (72)

1. A method for executing an application program requested by a client machine, the method comprising:

(a) receiving, by a client machine, a file including access information for accessing a plurality of application files;

(b) retrieving, by the client machine, an identification of the plurality of application files in response to the file;

(c) retrieving, by the client machine, at least one characteristic required for execution of the plurality of application files in response to the file;

(d) determining whether the client machine includes the at least one characteristic, and

(e) executing, by the client machine, a client responsive to a determination that the client machine lacks the at least one characteristic, wherein the client

i) transmits to a broker machine a request for access to a desktop computing environment with the at least one characteristic, the broker machine

a) selecting the virtual machine that can provide the desktop computing environment and an operating system in which to execute the desktop computing environment;

b) selecting an execution machine executing a hypervisor providing access to hardware resources required by the virtual machine,

c) launching the virtual machine into the execution machine, the virtual machine executing the operating system, and

d) launching the desktop computing environment into the executing operating system on the execution machine; and

ii) requests execution of the plurality of application files in the desktop computing environment on the execution machine.

2. The method of claim 1 , wherein the access information includes a location of a plurality of application files.

3. The method of claim 1 , wherein the plurality of application files comprises at least one application program.

4. The method of claim 1 , wherein the identification of the plurality of application files is an enumeration of a plurality of available application programs, the enumeration generated responsive to the access information.

5. The method of claim 1 , wherein the client machine evaluates an operating system on the client machine to determine if the client machine includes the at least one characteristic.

6. The method of claim 1 , wherein the client machine identifies a language used by an operating system on the client machine to determine if the client machine includes the at least one characteristic.

7. The method of claim 1 , wherein the client machine identifies a revision level of an operating system on the client machine to determine if the client machine includes the at least one characteristic.

8. The method of claim 1 , wherein the client machine identifies an application version of an application program residing on the client machine to determine if the client machine includes the at least one characteristic.

9. The method of claim 1 , wherein the at least one characteristic is a device driver.

10. The method of claim 1 , wherein the at least one characteristic is a license to execute the plurality of application files.

11. The method of claim 1 , wherein the client machine executes a script to determine whether the client machine includes the at least one characteristic.

12. The method of claim 1 , wherein the client machine receives instructions for determining whether the client machine includes the at least one characteristic.

13. The method of claim 1 , wherein a collection agent gathers information associated with the client machine to determine whether the client machine includes the at least one characteristic.

14. The method of claim 1 , wherein the client receives application-output data generated by the execution of the plurality of application files on the execution machine.

15. The method of claim 14 , wherein the client displays the application-output on the client machine.

16. The method of claim 14 , wherein the client receives the application-output data via an presentation layer protocol.

17. The method of claim 14 , wherein the client receives the application-output data via an ICA connection.

18. The method of claim 14 , wherein the client receives the application-output data via an X11 connection.

19. The method of claim 14 , wherein the client receives the application-output data via an RDP connection.

20. The method of claim 1 , wherein the virtual machine executes the plurality of application files.

21. The method of claim 1 , wherein the virtual machine receives and executes an application stream comprising the plurality of application files.

22. The method of claim 1 , wherein the execution machine provisions the virtual machine with the at least one characteristic.

23. The method of claim 1 , wherein the execution machine requests execution of the plurality of applications by a second execution machine, the second execution machine provisioning a second virtual machine on the second execution machine with the at least one characteristic.

24. The method of claim 1 , wherein the operating system of the execution machine provides a terminal services session, and the hypervisor executing in the terminal services session launches the virtual machine.

25. A system for accessing a plurality of files comprising an application program, the system comprising:

a client machine; and

an execution machine comprising a virtual machine that provides a desktop computing environment, the desktop computing environment including at least one characteristic required for executing a plurality of application files, wherein the client machine

i) receives a file comprising access information for accessing the plurality of application files;

ii) retrieves an identification of the plurality of application files and the at least one characteristic required for executing the plurality of application files;

iii) determines whether the client machine includes the at least one characteristic; and

iv) executes a client responsive to a determination that the client machine lacks the at least one characteristic, wherein the client

a) transmits to a broker machine a request for access to a desktop computing environment with the at least one characteristic, the broker machine

i) selecting a virtual machine that can provide the desktop computing environment and an operating system in which to execute the desktop computing environment,

ii) selecting an execution machine executing a hypervisor providing access to hardware resources required by the virtual machine,

iii) launching the virtual machine into the execution machine, the virtual machine executing the operating system, and

iv) launching the desktop computing environment into the executing operating system on the execution machine; and

b) requests execution of the plurality of application files in the desktop computing environment on the execution machine.

26. The system of claim 25 , wherein the plurality of application files comprises at least one application program.

27. The system of claim 25 , wherein the client machine receives an enumeration of a plurality of available application programs, the enumeration generated responsive to the access information.

28. The system of claim 25 , wherein the client machine evaluates an operating system on the client machine to determine whether the client machine includes the at least one characteristic.

29. The system of claim 25 , wherein the client machine identifies a language used by an operating system on the client machine to determine whether the client machine includes the at least one characteristic.

30. The system of claim 25 , wherein the client machine identifies a revision level of an operating system on the client machine to determine whether the client machine includes the at least one characteristic.

31. The system of claim 25 , wherein the client machine identifies an application version of an application program residing on the client machine to determine whether the client machine includes the at least one characteristic.

32. The system of claim 25 , wherein the at least one characteristic is a device driver.

33. The system of claim 25 , wherein the at least one characteristic is a license to execute the plurality of application files.

34. The system of claim 25 , wherein the client machine executes a script to determine whether the client machine includes the at least one characteristic.

35. The system of claim 25 , wherein the client machine receives instructions for determining whether the client machine includes the at least one characteristic.

36. The system of claim 25 , wherein the client machine comprises a receiver to receive a collection agent, and wherein the collection agent

i) gathers information associated with the client machine and

ii) determines whether the client machine includes the at least one characteristic.

37. The system of claim 25 , wherein the client receives application-output data generated by execution of the plurality of application files on the execution machine.

38. The system of claim 37 , wherein the client displays the application-output data on the client machine.

39. The system of claim 37 , wherein the client receives the application-output data via an presentation layer protocol.

40. The system of claim 37 , wherein the client receives the application-output data via an ICA connection.

41. The system of claim 37 , wherein the client receives the application-output data via an X11 connection.

42. The system of claim 37 , wherein the client receives the application-output data via an RDP connection.

43. The system of claim 25 , wherein the virtual machine receives an application stream for execution, the application stream comprising the plurality of application files.

44. The system of claim 25 , wherein the execution machine provisions the virtual machine with the at least one characteristic.

45. The system of claim 25 , further comprising a second execution machine that provisions a second virtual machine on the second execution machine with the at least one characteristic.

46. The system of claim 25 , wherein the execution machine executes an operating system that provides a terminal services session, and the hypervisor executing in the terminal services session launches the virtual machine.

47. The system of claim 25 , wherein the file identifies a location of a plurality of application files comprising an application program.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 10, 2007
From: CROFT, RICHARD JASON; LOW, ANTHONY EDWARD; MAZZAFERRI, RICHARD JAMES; PEDERSEN, BRADLEY J.
To: CITRIX SYSTEMS, INC.
Reel/Frame 019139/0364 →
Continuity (2)
Provisional Application 6076167400 · Jan 24, 2006
Related Publication 20070192329A1 · Aug 16, 2007