IP Library Granted Patent US 11,709,799
Granted Patent B2
US 11,709,799 · App. 15/178,324 · Granted Jul 25, 2023

Content or file based application virtualization using a cache

Inventors: Fei Huang (San Jose, CA); Daniel James Beveridge (Apollo Beach, FL)
Assignee: VMware, Inc.
G06F16/172G06F9/445G06F16/13G06F9/45537G06F2009/45579
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 11,709,799
App. No.
15/178,324
Granted
Jul 25, 2023
Kind
B2
Abstract

Embodiments provide for application-specific provisioning of files or registry keys. As applications are installed or launched, data is recorded by an application virtualization engine, and an index is created linking the recorded data to both the application and the underlying files or registry keys. As applications are requested (e.g., launched, updated, or the like), the application virtualization engine reveals various copies of file or registry keys to the application on demand or in accordance with a policy.

Claims (71)

1. A computing system for conserving space for application virtualization, the computing system comprising:

a database that maps associations between a plurality of applications and their respective files on a host, and records data indicating that at least two applications of the plurality of applications share a file required by the at least two applications during installation; and

an application virtualization engine running on the host, that:

receives a notification that an application installing event of a first application of the at least two applications, is occurring on the host;

determines that files from the application installing event of the first application have not been recorded in the database;

in response to the determining that files from the application installing event of the first application have not been recorded in the database, records the files from the application installing event of the first application;

indexes the recorded files in the database to map the associations; and

subsequently, during an application installing event, on the host, of a second application of the at least two applications:

intercepts a request to install a file required for the second application from the application installing event of the second application;

determines that the required file is not the shared file;

in response to the determining that the required file is not the shared file, checks the files recorded from the application installing event of the first application to determine that the file has been indexed in the database; and

based on determining that the required file has been indexed in the database from the application installing event of the first application:

adjusts a filter to make the required file available to the second application, wherein adjusting the filter comprises changing the required file from an older version of the required file to an upgraded version of the required file; and

while maintaining only one copy of the required file, represents the required file as residing in a first location accessible to the first application and represents the required file as also residing in a second location accessible to the second application.

2. The computing system of claim 1 , wherein the computing system includes a multiuser operating system (OS) enabling a plurality of users to use the multiuser OS and each user of the plurality of users is provided a unique view of applications of the plurality of applications installed and available within the multiuser OS for use of the user.

3. The computing system of claim 1 , wherein the second application is updated in place by the application virtualization engine updating one or more files associated with the second application to enable installation of an updated second application.

4. The computing system of claim 1 , wherein upon a launch of at least one of the plurality of applications, the application virtualization engine further:

compares one or more user criteria with a set of policies to determine that the one or more user criteria triggers a policy from the set; and

changes a version of the first application or the second application for use by a user.

5. The computing system of claim 1 , further comprising:

merging the database with another mapping database to create a master database, the master database routing requests between the second application of the plurality of applications and an underlying storage.

6. The computing system of claim 1 , wherein the file is shared by a plurality of remote desktop sessions, while appearing different to each of the plurality of remote desktop sessions.

7. The computing system of claim 1 , wherein at least one of the plurality of applications shares access to the file.

8. The computing system of claim 1 , wherein the application virtualization engine further:

predicts a need for one or more files based on application file access patterns of the file; and

proactively pre-populates a cache based on the predicted need for the one or more files.

9. A method to conserve space for application virtualization, the method comprising:

providing a database that maps associations between a plurality of applications and their respective files on a host, and records data indicating that at least two applications of the plurality of applications share at least one file required by the at least two applications during installation;

receiving a notification that an application installing event of a first application of the at least two applications, is occurring on the host;

determining that files from the application installing event of the first application have not been recorded in the database;

in response to the determining that files from the application installing event of the first application have not been recorded in the database, recording files from the application installing event of the first application;

indexing the recorded files in the database to map the associations; and

subsequently, during an application installing event of a second application of the at least two applications, on the host:

intercepting, by an application virtualization engine running on the host, a request to install a file required for the second application from the application installing event of the second application;

determining that the required file is not the shared file;

in response to the determining that the required file is not the shared file, checking the files recorded from the application installing event of the first application to determine that the required file has been indexed in the database; and

based on determining that the required file has been indexed in the database from the application installing event of the first application:

adjusting a filter to make the required file available to the second application, wherein adjusting the filter comprises changing the required file from an older version of the required file to an upgraded version of the required file; and

while maintaining only one copy of the required file on the host, representing the required file as residing in a first location accessible to the first application and representing the required file as also residing in a second location accessible to the second application.

10. The method of claim 9 , wherein the adjusting the filter comprises pointing the first application and the second application to the one copy of the required file on the host for all users.

11. The method of claim 10 , further comprising:

providing a multiuser operating system (OS) enabling a plurality of users to use the OS and each user of the plurality of users is provided a unique view of applications of the plurality of applications installed and available within the multiuser OS for use of the user.

12. The method of claim 9 , wherein adjusting the filter is based on a policy related to a remote desktop session user.

13. The method of claim 9 , further comprising:

recording intercepted requests for the file;

analyzing the intercepted requests to determine application file access patterns;

predicting a need for one or more files based on the determined application file access patterns; and

proactively pre-populating a cache based on the predicted need for the one or more files.

14. The method of claim 9 , wherein the file is shared by a plurality of remote desktop sessions, while appearing different to each of the plurality of remote desktop sessions.

15. The method of claim 9 , further comprising:

comparing one or more user criteria with a set of policies to determine that the one or more user criteria triggers a policy from the set; and

changing a version of the first application or the second application for use by a user.

16. A non-transitory computer-readable medium including instructions that, when executed by an application virtualization engine running on a host, conserve space for application virtualization, by causing at least one processor to perform operations comprising:

providing a database that maps associations between a plurality of applications and their respective files on the host, and records data indicating that at least two applications of the plurality of applications share at least one file required by the at least two applications during installation;

receiving a notification that an application installing event of a first application of the at least two applications is occurring on the host;

determining that files from the application installing event of the first application have not been recorded in the database;

in response to the determining that files from the application installing event of the first application have not been recorded in the database, recording files from the application installing event of the first application;

indexing the recorded files in the database to map the associations; and

subsequently, during an application installing event of a second application of the at least two applications on the host:

intercepting a request to install a file required for the application installing event of the second application;

determining that the required file is not the shared file;

in response to the determining that the required file is not the shared file, checking the files recorded from the application installing event of the first application to determine that the required file has been indexed in the database; and

based on determining that the required file has been indexed in the database from the application installing event of the first application:

making available the required file to the second application; and

adjusting a filter to make the required file available to the second application, wherein adjusting the filter comprises changing the required file from an older version of the required file to an upgraded version of the required file; and

while maintaining only one copy of the required file on the host, representing the required file as residing in a first location accessible to the first application and representing the required file as also residing in a second location accessible to the second application.

17. The non-transitory computer-readable medium of claim 16 , further comprising instructions for composing a virtual hard drive containing the file used by the second application.

18. The non-transitory computer-readable medium of claim 16 , further comprising:

comparing one or more user criteria with a set of policies to determine that the one or more user criteria triggers a policy from the set; and

changing a version of the first application or the second application for use by a user.

19. The non-transitory computer-readable medium of claim 16 , further comprising providing a multiuser operating system (OS) enabling a plurality of users to use the OS and each user of the plurality of users is provided a unique view of applications of the plurality of applications installed and available within the multiuser OS for use of the user.

Assignments (4)
PATENT ASSIGNMENT Recorded Aug 5, 2024
From: VMWARE LLC
To: OMNISSA, LLC
Reel/Frame 068327/0365 →
SECURITY INTEREST Recorded Jul 3, 2024
From: OMNISSA, LLC
To: UBS AG, STAMFORD BRANCH
Reel/Frame 068118/0004 →
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2016
From: HUANG, FEI; BEVERIDGE, DANIEL JAMES
To: VMWARE, INC.
Reel/Frame 038865/0917 →
Continuity (2)
Provisional Application 62211750 · Aug 29, 2015
Related Publication 20170060605A1 · Mar 2, 2017