# US 2013/0159543 A1 · Fast application streaming using on-demand staging

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2013/0159543 A1
- Document ID: US20130159543A1
- Status: Published application
- Kind: A1
- Application number: 13/327,699
- Filed: 2011-12-15
- Published: 2013-06-20
- Earliest claimed: 2011-12-15
- Assignees: Microsoft Corporation
- Inventors: Matthew R. Yandek; Gurashish Singh Brar; Hui Li
- Web page: https://patentgrep.com/patent/US20130159543A1

## CPC

- G06F 16/182: Distributed file systems
- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 9/44521: {Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading}
- G06F 9/5077: {Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455)}
- G06F 16/1744: {using compression, e.g. sparse files}
- G06F 16/1824: {implemented using Network-attached Storage [NAS] architecture (distributed or networked storage systems G06F3/067; protocols for distributed storage of data in a network H04L67/1097)}
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- G06F 8/60: Software deployment
- G06F 9/4416: {Network booting; Remote initial program loading [RIPL]}
- H04L 67/04: specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
- H04L 67/08: specially adapted for terminal emulation, e.g. Telnet
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Embodiments are directed to rapidly launching a virtual software application using on-demand file staging, rapidly launching a virtual software application using on-demand registry staging and to rapidly publishing a virtual software application using on-demand staging. In one scenario, a computer system creates a high-level file listing that includes a list of specified high-level data files and directories that are part of a virtual application package. The computer system receives an indication from an application user that the virtual application is to be accessed and dynamically creates sparse data files for those data files that are to be accessed based on the received indication. Then, upon determining that the virtual application is attempting to access the sparse data files, the computer system dynamically streams the data corresponding to the sparse data files on demand from the remote data store.

## Claims

### Claim 1

At a client computer system including at least one processor and a memory, in a computer networking environment including a plurality of computing systems, a computer-implemented method for rapidly launching a virtual software application using on-demand file staging, the method comprising:
an act of creating, on the client computer system, a high-level file listing that includes a list of specified high-level data files and directories that are part of a virtual application package;
an act of receiving an indication from an application user that the virtual application is to be accessed;
an act of dynamically creating sparse data files for those data files that are to be accessed based on the received indication, the sparse files including file names and file sizes for those data files that are to be accessed, the data corresponding to the sparse data files being stored in a remote data store; and
upon determining that the virtual application is attempting to access one or more of the sparse data files, an act of dynamically streaming the data corresponding to the sparse data files on demand from the remote data store.

### Claim 2 (depends on 1)

The method of claim 1, wherein the indication from the user indicates that the virtual application is to be initialized.

### Claim 3 (depends on 2)

The method of claim 2, wherein sparse files are dynamically created for those files that are to be used in initializing the virtual application.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
an act of determining that the indication from the user indicates that a specified directory is to be accessed; and
an act of dynamically creating sparse files for the specified directory and its immediate contents.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
an act of determining that the indication from the user indicates that a specified file is to be accessed, wherein the specified file is located in a sub-directory; and
an act of dynamically creating sparse files for the specified data files' root directory and each intervening sub-directory.

### Claim 6 (depends on 1)

The method of claim 1, wherein an administrative user indicates that on-demand staging is to be overridden for one or more specified data files, such that the specified data files are preloaded on disk.

### Claim 7 (depends on 1)

The method of claim 1, wherein those data files that are streamed to the computer system are stored on a local data store.

### Claim 8 (depends on 7)

The method of claim 7, wherein subsequent application requests for previously streamed data files are intercepted and sent to the local data store for fulfillment.

### Claim 9 (depends on 8)

The method of claim 8, wherein local file system namespaces are blended for direct use by the virtual application.

### Claim 10 (depends on 1)

The method of claim 1, wherein sparse registry files are dynamically created for those registry files that are accessed by the virtual application.

### Claim 11

At a client computer system including at least one processor and a memory, in a computer networking environment including a plurality of computing systems, a computer-implemented method for rapidly launching a virtual software application using on-demand registry staging, the method comprising:
an act of creating, on the client computer system, a high-level registry file listing that includes a listing of specified, high-level registry files that are to be used by the virtual software application;
an act of receiving an indication from an application user that the virtual application is to be accessed;
an act of dynamically creating those registry files listed in the high-level listing that are to be accessed based on the received indication, such that the created registry files are written into the client computer system registry; and
upon determining that the application is attempting to access one or more additional registry files, an act of dynamically creating the additional registry files in the client computer system registry on demand.

### Claim 12 (depends on 11)

The method of claim 11, further comprising:
intercepting data requests from the virtual software application at a registry key level; and
creating a registry key for each data request on demand using the data from the dynamically created registry file.

### Claim 13 (depends on 12)

The method of claim 12, wherein if the dynamically created registry file is no longer accessible, the registry file containing the required data for the key that the application is requesting is streamed to the client computer system on demand.

### Claim 14 (depends on 11)

The method of claim 11, wherein registry staging is combined for a plurality of different virtual software applications.

### Claim 15 (depends on 11)

The method of claim 11, wherein the dynamic creation of registry files is carried out as a background process.

### Claim 16 (depends on 11)

The method of claim 11, wherein registry files are dynamically created for those files that are to be used in initializing the virtual software application.

### Claim 17 (depends on 11)

The method of claim 11, wherein the registry is pre-loaded onto the client computer system in an asynchronous manner.

### Claim 18

At an administrative computer system including at least one processor and a memory, in a computer networking environment including a plurality of client computing systems, a computer-implemented method for rapidly publishing a virtual software application using on-demand staging, the method comprising:
an act of receiving an input from a computer administrator indicating that one or more virtual software applications are to be published on one or more client computer systems;
in response to the received input, an act of publishing the virtual software application to the one or more client computer systems, wherein publishing comprises:
an act of creating, on at least one of the plurality of client computer systems, a high-level file listing that includes a list of specified high-level data files and directories that are part of a virtual application package; and
an act of creating one or more sparse data files on demand for those data files requested by the virtual software application.

### Claim 19 (depends on 18)

The method of claim 18, wherein publishing the virtual software application to the one or more client computer systems further comprises:
an act of creating, on the client computer system, a high-level registry file listing that includes a listing of specified, high-level registry files that are to be used upon initialization of the virtual software application; and
an act of dynamically creating those registry files listed in the high-level listing that are to be accessed based on the received indication, such that the created registry files are written into the client computer system registry.

### Claim 20 (depends on 18)

The method of claim 18, wherein virtual software application updates are dynamically published to a plurality of different client computer systems at the indication of the administrative user.
