The described embodiments relate generally to techniques for generating a patch file. More particularly, the present embodiments relate to techniques that generate a multi-version patch file that can be used to update a file on a client computing device.
Many modern day applications and operating systems occasionally require program code modifications to correct a defect found in those applications/operating systems. Defects can include, for example, unintended behaviors known as “bugs,” security breaches that can potentially result in the loss of data privacy maintained by the application/operating system, corrupted data, and so on. In some instances, an application or operating system can require an occasional update in order to enable a user to utilize new features associated with a newer version of the application/operating system. In response, developers and/or distributors of a particular application/operating system often release one or more software “patches,” included in a patch file, that are intended to specifically address one or more of the aforementioned defects or provide the user with a version of the application/operating system that includes new features. The patch file can be communicated, to one or more client computing devices, as an over-the-air (“OTA”) update file which is distributed from a server computing device.
In most circumstances, the patches are very specific and require only a slight modification of program code associated with a particular file. The modification of the program code in this manner results in the creation of a modified file. In this fashion, the modified file becomes a latest version of the file in which all other existing versions of the file are superseded, thereby making each superseded version a prior version of the file. Despite requiring only slight program code modifications to produce the latest version of the file, the latest version of the file nevertheless still needs to be quickly distributed to all client computing devices that have the application/operating system installed in order to (1) minimize any potential damage caused by the one or more defects, or (2) enable the client computing devices to have quicker access to newly added features provided by the latest version of the file.
However, when distributing a patch file to the client computing devices, conventional solutions fail to consider a number of issues. One issue is that several different prior versions of a file can be already installed on different client computing devices. To address this issue, conventional solutions create several different patch files that each target different prior versions of the file. These separate patch files each include a single update file intended for a specific prior version of the file. Accordingly, the creation of separate patch files in this manner results in wasted computational resources used to generate each update file as well as unnecessary delays in getting patch files to client computing devices.
Another issue is that conventional solutions require a “full replacement” file update in which a file is completely replaced with a new file to fix the one or more defects. As a result, a patch file including the full replacement file unnecessarily increases the size of the patch file, which can delay the delivery of the patch file to the client computing devices. This scenario is especially problematic when weak data transmission speeds or poor network connectivity are involved. For instance, the increased size of the patch file affects how quickly distributors of the patch file can transmit the patch file over a network as well as the ability of each client computing device to receive the patch file in a timely fashion.
In some scenarios, conventional solutions try to include several different update files within a patch file in which each update file needs to be installed, in combination, in order to fix the one or more defects. However, this strategy suffers the same issues discussed above in which the patch file is unnecessarily increased in size and also requires the client computing device to spend more time installing multiple files in order to receive a latest version of a particular file. Another effect of increasing a patch file size is that larger amounts of free memory storage space are needed at the client computing device in order to install the patch file. Given the general unpredictability of when a patch file release occurs, any patch file size increases can directly impact when a client computing device can install the patch file. For instance, if the client computing device does not have sufficient free memory storage space to install a newly released patch file, the client computing device will be forced to delay installation of the patch file until the sufficient storage space is created. As a result, a customer can have a negative experience with an application/operating system in need of the patch file until the file update installation occurs at the client computing device. Yet another issue is that several different types of client computing devices, with different hardware/software profiles, can each execute a same application/operating system that requires the same file update to address one or more defects. In response, conventional solutions employ the same technique as described above and create separate patch files that each include a single update file that is intended for use by a specific type of client computing device. Accordingly the same computational resource and delivery concerns remain and are left unaddressed by conventional solutions.
In addition to the deficiencies mentioned above, conventional solutions also fail to provide any measures that minimize the occurrence of installation failures when a client computing device attempts to install a patch file. For instance, during a patch file installation, the client computing device may encounter interruptions that include a sudden loss of power, a sudden lack of sufficient memory space, or similar interruptions that may require a reboot of the client computing device in order to successfully complete the patch file installation process. Notably, such interruptions to the patch file installation process can result in an unstable build of the latest version of the file, regardless of whether a client computing device uses an “out-of-place” file-write system or an “in-place” file-write system.
For instance, during a patch file installation on an “out-of-place” file-write system, the current version of the file installed on the client computing device is loaded from disk (e.g., non-volatile memory) into memory (e.g., volatile memory) and used to build the contents of the latest version of the file. However, when an interruption to the patch file installation occurs, the current version of the file is no longer present on the disk and, thus, no longer available for use in the patch file installation process after the interruption. Also, during a patch file installation on an “in-place” file-write system, the current version of the file installed on the client computing device is modified on the disk through a sequence of reads and writes in order to build the contents of the latest version of the file. However, when an interruption to the patch file installation process occurs in this instance, the current version of the file can be placed in an invalid, corrupted, or otherwise unrecognizable state. In these situations, the ability to use the current version of the file in the patch file installation process, after the interruption, is greatly compromised.
Accordingly, as a result of the issues discussed above, developers and/or distributors of a particular application/operating system are in dire need of a solution that can both minimize computational resource costs while also quickly and efficiently deliver patch files to a variety of different client computing devices so that users of the application/operating system can use an up-to-date version of the application/operating system that includes minimal defects. Furthermore, developers and/or distributors of a particular application/operating system are also in need of a solution that can (1) minimize the occurrence of patch file installation errors and (2) perform actions that can remedy a potentially unstable build of a latest version of the file in the event that an interruption occurs during a patch file installation.
Accordingly, the representative embodiments set forth herein disclose techniques that minimize the amount of time spent, by a server computing device, creating patch files for each available version of a particular file, whenever the file is modified. Additionally, the representative embodiments set forth herein disclose techniques that use cache memory available at the server computing device to store code delta calculations already performed in order to eliminate the need to perform repetitive calculations when creating a patch file.
One embodiment sets forth a method for generating a multi-version patch file. In particular, the method includes, at a server computing device, modifying a first file to produce a plurality of versions associated with the first file, in which the plurality of versions includes: (i) a latest version associated with the first file, and (ii) at least two previous versions relative to the latest version. Next, the method involves identifying a difference between the latest version and the at least two previous versions to produce first and second delta versions of the first file. Finally, the method involves generating the multi-version patch file for installation by a client computing device, in which the multi-version patch file (i) includes the first and second delta versions, and (ii) causes a second file, that corresponds to the first file and stored on the client computing device, to be updated to the latest version using at least one of the first and second delta versions.
One embodiment sets forth a method for updating a file at a client computing device using a multi-version patch file. In particular, the method includes, at the client computing device, selecting a first delta file, from the multi-version patch file, to update a previous version of the file currently installed on the client computing device to a latest version of the file, in which the multi-version patch file includes a plurality of different delta files that each correspond to different previous versions of the file. Next, the method involves generating a copy of the previous version at the client computing device. Next, the method involves producing the latest version using the previous version. Finally, the method involves switching to the copy to produce the latest version based at least in part on a first interruption being detected at the client computing device.
Other embodiments include a computing device that is configured to carry out the various steps of any of the foregoing methods.
Other aspects and advantages of the invention will become apparent from the following detailed description taken in conjunction with the accompanying drawings that illustrate, by way of example, the principles of the described embodiments.
The disclosure will be readily understood by the following detailed description in conjunction with the accompanying drawings, wherein like reference numerals designate like structural elements.
Representative applications of methods and apparatus according to the present application are described in this section. These examples are being provided solely to add context and aid in the understanding of the described embodiments. It will thus be apparent to one skilled in the art that the described embodiments can be practiced without some or all of these specific details. In other instances, well-known process steps have not been described in detail in order to avoid unnecessarily obscuring the described embodiments. Other applications are possible, such that the following examples should not be taken as limiting.
In the following detailed description, references are made to the accompanying drawings, which form a part of the description and in which are shown, by way of illustration, specific embodiments in accordance with the described embodiments. Although these embodiments are described in sufficient detail to enable one skilled in the art to practice the described embodiments, it is understood that these examples are not limiting such that other embodiments can be used, and changes can be made without departing from the spirit and scope of the described embodiments.
It should be noted that the embodiments described herein discuss patch files/file updates that are performed for applications, however the embodiments described herein are not limited as such and can be used by other software entities including, for example, operating systems. As previously described herein, conventional solutions for both the generating and distributing patch files result in wasted computational resources as well as unnecessary delays in getting update files to client computing devices. To cure this deficiency, the embodiments set forth herein provide various techniques that minimize the amount of time spent creating patch files for each available version of a particular file, whenever the file is modified. Additionally, using cache memory available on a server computing device, the embodiments set forth herein also eliminate the need to perform repetitive calculations to create patch files for each different version, in existence, of the file. In this fashion, different types of client computing devices that require the same file update can quickly and efficiently receive a patch file in a manner that allows each device to execute an application with minimal defects.
As will be described in greater detail, the described embodiments calculate a code delta for each previous version of a newly modified file by comparing the differences between the newly modified file (i.e., the latest version of the file) and each of at least two different previous versions of the file. In this manner, each code delta can be used to update a particular prior version of a file to a latest version of the file, without the need to install any intermediate files or additional code deltas. Each code delta can then be compressed in a manner that enables the server computing device to deliver a patch file that includes a number of different code deltas to be distributed to several different client computing devices more quickly. In this fashion, each client computing device, in receipt of the distributed patch file, can use just a single code delta to install the latest version of a given file.
Additionally, the described embodiments also perform delta code caching procedures that eliminate the need to re-calculate a code delta each time a file is modified. As will be described herein, prior to performing the code delta calculations described above, the described embodiments initially determine whether a code delta has already been calculated to account for differences between a particular prior version of a file and a latest version of the file. If a calculation has already been performed, the described embodiments then bypass the performance of code delta calculations and, instead, quickly retrieve the previously calculated code delta from local cache memory. As will also be described in greater detail, the storage of code deltas in this fashion also enables the described embodiments to re-distribute previously calculated code deltas to different types of client computing devices using the same patch file. For instance, a smartphone, such as Apple Inc.'s iPhone® and a tablet computing device, such as Apple Inc.'s iPad® tablet computing device, can both use the same patch file and appropriate code delta included therein to install the same latest version of a particular file.
Also, as will be described herein, the described embodiments can use a special script that (1) detects which version of a particular file is currently installed on a client computing device and (2) direct the client computing device to follow a specific set of instructions that enable the client computing device to install the latest version of the file. In this fashion, the client computing device can be directed to install an appropriate code delta, despite the patch file including several different code deltas. As will be readily apparent by the exemplary embodiments set forth herein, the described embodiments can perform an N:1 combination update in which several different versions of a newly modified file can be updated using a single patch file, rather than a standard 1:1 file update that is performed using conventional approaches.
Furthermore, as will be described in greater detail in
A more detailed description of the various techniques described herein, and the manner in which they can be implemented, is provided below in conjunction with
According to some embodiments, the delta calculation engine 110 includes the functionality to identify file differences (e.g., using binary file comparison procedures or similar techniques) between at least two or more different versions of a particular file associated with an application. As will be described in greater detail herein in
As will be described in greater detail, according to some embodiments, the delta calculation engine 110 can perform procedures to determine file differences upon receipt of two or more versions of a file as input. In some scenarios, the differences between versions of the file can be very minor in instances where the two or more versions are released in sequential order (i.e., a “10.1” version, a “10.2” version, a “10.3” version, and so on). In this fashion, each version can use code deltas produced by the described embodiments in order to be updated to a latest version of the file. Accordingly, the resultant data produced by the delta calculation engine 110 can be used by the delta file generation module 112 to produce compressed binary deltas, referred to hereinafter as “code deltas,” which will be discussed now.
According to some embodiments, the delta file generation module 112 includes the functionality to compress one or more files code deltas using a compressor (not depicted). In this fashion, the delta file generation module 112 can (1) receive resultant data produced by the delta calculation engine 110 that is based on identified file differences between two or more versions of a same file, and (2) generate a corresponding compressed version of the resultant data in the form of a code delta that represents those differences. As will be described in greater detail in
According to some embodiments, the update package generation module 114 includes the functionality to generate one or more patch files using resultant data produced by the delta file generation module 112. For instance, as will be described in greater detail in
As will be described in greater detail in
Accordingly,
In this fashion, several different system-level file image comparisons can be performed in which the circumstances concerning the degree in which the file 202 has been modified can be ascertained. The results of the system-level file image comparison can yield results that include, for example, (1) one or more files that were unmodified for the application, (2) one or more files that were deleted or removed for the application, (3) one or more files that were added for the application, and (4) one or more files that were modified for the application, including modifications made to the file 202. Accordingly, the code delta identification process 200 illustrated in
The latest version file 202-1 includes, for instance, program code that updates the program code included in the previous version file 202-1. In other words, the previous version file 202-2 includes program code that appeared within the file 202 prior to the modification of the file 202. For instance, in one scenario, the file 202 can be used by the application to specifically perform administrator-level functions for the application. In accordance with this scenario, a programmatic function (i.e., function expressed in application program code) can be designed to produce a menu object that enables an application administrator to allow one particular set of users to view a certain item displayed within a main graphical user interface (“GUI”) for the application. In this described scenario, the difference in the program code between the latest version file 202-1 and the previous version file 202-2 can be that the file versions define two completely different groups of users that are allowed to see the item displayed within the main (“GUI”) of the application. For illustrative purposes, this difference in program code can be depicted by the file representation maps illustrated in
It should be appreciated that a computing device, receiving a multi-version patch file produced by the described embodiments, includes a local installation partition where the multi-version patch file is installed. This installation partition includes an installed version of file 202, such the previous version files 202-2 and 202-3. Additionally, the installation partition includes a set of one or more data blocks, such as the data blocks 0-7 depicted in
As depicted by the file representation map of the latest version file 202-1, the data segments 204-1, 204-2, and 204-3 can each be installed within a set of one or more data blocks that include the data blocks 1-7. With reference now to the file representation map of the previous version file 202-2, it should be noted that, of the same data segments 204-1, 204-2, and 204-3 currently installed within the data blocks 1-7 of a client computing device (not depicted), the data segment 204-3 includes fewer bits (thus smaller in size) than a counterpart data segment 204-3 associated with the latest version file 202-1. In this manner, the disparity between the data segments 204-3 of the latest version file 202-1 and the previous version file 202-2 can be attributed to the previously discussed differences in program code associated with the aforementioned programmatic function.
As further depicted by the code delta identification process 200, the delta calculation engine 110 identifies the differences in the program code between the latest version file 202-1 and the previous version file 202-3. In some scenarios, the previous version file 202-3 can be another previous version of the file 202 that is installed within the data blocks 1-7 of a different client computing device (i.e., a client computing device that has the previous version file 202-3 installed rather than the previous version file 202-2). In this fashion, the previous version file 202-3 differs from the previous version file 202-2 and the latest version file 202-1 in at least one aspect.
For instance, in the scenario described above, the difference in the program code between the previous version file 202-3 and (1) the previous version file 202-2 and (2) the latest version file 202-1 is that the aforementioned programmatic function in the previous version file 202-3 defines a different group of users than the group defined for (1) the previous version file 202-2 and (2) the latest version file 202-1. With reference now to the file representation map of the previous version file 202-3, it should be noted that the data segment 204-3 is not installed by any client computing device currently using the previous version file 202-3. In this manner, the disparity between the data segments of the previous version file 202-2, the previous version file 202-3, and the latest version file 202-1 can be attributed to the previously discussed program code differences between the previous version file 202-3 and (1) the previous version file 202-2 and (2) the latest version file 202-1.
After the delta calculation engine 110 finishes identifying the differences in the files, the delta file generation module 112 can determine how the program code included in the previous versions of the file 202 described in
For example, based on the identified differences between the latest version file 202-1 and the previous version file 202-2 determined during the code delta identification process 200, the delta file generation module 112 produces the code delta 208. In some scenarios, the code delta 208 includes a respective set of program code that specifies that a first number of bytes can be added to a second number of bytes from the previous version file 202-2 to produce the latest version file 202-1. Additionally, based on the identified differences between the latest version file 202-1 and the previous version file 202-3 determined during the code delta identification process 200, the delta file generation module 112 also produces the code delta 210. In some scenarios, the code delta 210 includes a respective set of program code that specify that a first number of bytes can be added to a second number of bytes from the previous version 202-3 to produce the latest version file 202-1. In this fashion, the program code included in either the code delta 208 and the code delta 210 enables a client computing device to find exact or approximate matches against a previous version of the file 202 installed locally (i.e., either the previous version file 202-2 or the previous version file 202-3) and update the local version of the file 202 to the latest version file 202-1, without the need to install any additional/intermediate files or code deltas.
Additionally, during the generation of the code deltas 208 and 210, the delta file generation module 112 can also generate a set of one or more instructions that can be processed by a client computing device, in receipt of a multi-version patch file created by the described embodiments. For instance,
Additionally, as depicted in
Notably, the instruction group 216 also includes instructions that direct that the client computing device to copy a certain number of bytes from an archived code section and write them as output, which will be discussed in greater detail in
According to some embodiments, instruction groups can each be included within a script referenced by a client computing device when performing the file update procedures described herein. For instance, with reference now to a file update script generation process 218 depicted in
With respect to instructions regarding the modification of the file 202, the file update script 220 also includes instructions that enable the client computing device to select an appropriate instruction group and corresponding code delta (i.e., either code delta 208 or 210) to immediately update any locally installed version of the file 202 to the latest version file 202-1. In this fashion, the file update script 220 enables the client computing device to install the latest version file 202-1 without (1) the need for multiple code deltas or (2) intermediate version files. It should be appreciated that the intermediate version files described herein can refer to other versions of the file 202 that are between the version currently installed on the client computing device and the latest version file 202-1.
For instance, as illustrated in
Turning now to
It should be appreciated that, although the code deltas included within the patch file 224 are generally packaged together based on small incremental differences between their corresponding file versions, the manner in which code deltas are included with the patch file 224 can be completely arbitrary. For instance, according to some embodiments, a file update policy used by an file update distributor may favor the inclusion of more or less code deltas than those depicted in
As described herein, multi-version patch files can be distributed among several different client computing devices in which each computing device has a different version of a particular file installed locally. As a result, according to some embodiments, the file update script 220 executes an initial survey (or “digest”) of a client computing device to determine which version of a particular file is installed, prior to the performance of the file update procedures described herein. Upon completion of the file update procedures, the file update script 220 executes a subsequent survey of the computing device to verify that the file has been updated.
For instance,
As previously described herein, the file update script 220 surveys a given client computing device to determine which version of the file 202 is currently installed locally. For instance, in the embodiment depicted in
Accordingly, upon execution, each of the file update scripts 220 (1) applies a hash function to a local file 202 installation at the client computing devices 304 and 306, respectively, and (2) based on the computed hash value, determines if a code delta from the patch files 224 needs to be installed for the client computing device to use the latest version file 202-1. For example, if a client computing device already uses the latest version file 202-1, then the computed hash value will indicate a value that corresponds to the latest version file 202-1. In such instances, the described embodiments do not perform any of the file update procedures described herein. However, if the computed hash value indicates a value associated with either the previous version files 202-2 or 202-3, then file update script 220 initiates the file update procedures described herein to update the previous version of the file 202 to the latest version file 202-1.
For instance, with reference to the client computing device 304 depicted in
With reference now to the client computing device 306 depicted in
For instance, with reference again to the file representation maps previously illustrated in
Accordingly, as demonstrated by the scenario depicted in
It should be appreciated that the hash values described herein can include any values generated through a cryptographic hash function. Examples of cryptographic hash function can include, but are not limited to, secure hash algorithms (“SHA”), digital signature algorithms (“DSA”), and so on.
Furthermore, as described herein, the described embodiments can increase the chances of successfully installing a patch file on a client computing device by both (1) minimizing the occurrence of patch file installation errors and (2) performing actions that can remedy a potentially unstable build of a latest version of the file in the event that an interruption occurs during a patch file installation. For instance,
For instance, with reference to the patch file installation procedures 400 depicted in
For example,
For instance, continuing with the patch file “out-of-place” installation procedures 410 described now in
Also, as described herein, the patch file 224 enables client computing devices that utilize an “in-place” file-write system to successfully complete the patch file installation procedures described herein, even in the event that the patch file installation process is interrupted. For instance,
After detecting the interruption, the client computing device 304 processes instructions included in the file update script 220 to calculate a hash value for use, by the file update script 220, in determining whether the previous version file 202-2 is currently in a “valid” or “invalid” state after the interruption. According to some embodiments, the hash value can be based, at least in part, on memory state data 414 stored in the non-volatile memory 404. In this fashion, the memory state data 414 assists the file update script 220 in identifying the current state of the previous version file 202-2 after an interruption occurs during the patch file installation process. A valid state determination, made by the file update script 220, can indicate that the previous version file 202-2 was successfully updated to the latest version file 202-1. An invalid state determination, on the other hand, can indicate that the previous version file 202-2 was not successfully updated to the latest version file 202-1.
For example, as depicted in
Accordingly, using the procedures described in
Notably, according to some embodiments, the file update script 220 can also track the number of interruptions that occur during a particular patch file installation process (e.g., using a counter). Thus, in the event that additional interruptions occur during the process of installing the latest version file 202-1 at the client computing device 304, the file update script 220 can perform additional measures to ensure that a stable version of the latest version file 202-1 is successfully installed. For instance, after a second interruption is detected at the client computing device 304 (i.e., a second interruption that occurs after the interruption discussed in
According to some embodiments, the survey detects errors by determining whether any data bits/blocks were flipped either prior to or during the patch file installation process. The flipping of data bits/blocks in this manner can result in an unsuccessful/corrupted installation of the latest version file 202-1. When attempting to determine whether any data bits/blocks were flipped, the survey locates one or more parity bits that were installed during the patch file installation process. For instance, the survey locates a parity bit added to the code delta 208, the archived code section 226, or a different item included in the patch file 224. According to some embodiments, the value of the parity bit can be determined prior to the transmission of the patch file 224 to the client computing device 304. In this manner, after locating the parity bit, the parity bit is re-calculated and compared to a previously determined parity bit value. Provided the values are equal, the file update script 220 can determine that the installation of the latest version file 202-1 was successfully completed without further action. However, if the values are determined to be not equal, then the file update script 220 determines that at least one error occurred during the installation of the latest version file 202-1. In turn, the file update script 220 corrects detected errors using one or more ECCs included in the patch file 224.
For example, the error correction code application procedures 416 depicted in
It should be appreciated that the number of ECCs 228 included in the patch file 224 can be arbitrary. For instance, in one scenario, the number of ECCs 228 included in the patch file 224 can be based patch file size considerations. For instance, a fewer number of ECCs 228 can be included in the patch file 224 in order enable efficient transmission of the patch file 224 to one or more client computing devices. In another scenario, a larger number of ECCs 228 can be included in the patch file 224 in order enable more efficient detection and correction of errors during the installation of the latest version file 202-1 at a particular client computing device. It should also be appreciated that the procedures depicted in
Notably, the use of (1) the previous version file copy 408 and (2) ECCs 228, as described in
Furthermore, as described herein, the server computing device 102 can also include cache memory that enables the server computing device 102 to increase the speed at which the patch file 224 is distributed to different client computing devices, such as the client computing devices 304 and 306. For instance,
For instance, in the scenario depicted in
Indeed, the storage of the code deltas 208 and 210 in the cache memory 502 completely avoids the need to re-calculate code differences between the latest version file 202-1 and each of (1) the previous version file 202-2, and (3) the previous version file 202-3 since these differences are already included by the code deltas 208 and 210. Additionally, the storage of the code deltas 208 and 210 in the cache memory 502 also enables the server computing device 102 to re-distribute the code deltas 208 and 210 to different types of client computing devices. For instance, in one scenario, a mail application, such as Apple Inc.'s Apple Mail® can be executed via a smartphone, such as Apple Inc.'s iPhone®. The same mail application can also be executed by a different type of computing device, such as Apple Inc.'s iPad® tablet computing device. In this fashion, the mail application, despite being executed in different computing environments, can still use the same file, such as the file 202, which requires an occasional file update. Accordingly, the code deltas 208 and 210 stored in the cache memory 502 can be readily accessed and quickly included in any given patch file that is communicated to both the desktop computing device and the tablet computing device for updating their respective files 202. In this fashion, the need to re-calculate code deltas for different types of computing devices is also avoided by the described embodiments.
It should be appreciated that client computing devices are not limited to just desktop computing devices and tablet computing devices and can include other types of computing devices that include, but are not limited to, wireless hand-held devices (e.g., mobile phone, pager, and so on), wireless wearable devices capable of wirelessly transmitting digital information (e.g., electronic watch devices), and so on. It should also be appreciated that, according to some embodiments, rather than querying the cache delta file manager 116 to determine if a code delta has already been calculated for a particular file version, the delta calculation engine 110 can instead query the cache delta file manager 116 to determine if a particular patch file has been cached in memory resident on the server computing device 102. In this fashion, the delta calculation engine 110 can implicitly determine whether a particular set of code deltas are stored in the cache memory, rather than performing queries at a per-code delta level.
Using the file update procedures described herein, a server computing device can efficiently push file updates to several different computing devices in a much more streamlined manner compared to conventional solutions. The file update procedures described herein reduce the need to use several different computing machines when generating a file update for several different types of client computing devices. As illustrated by the various embodiments described herein, the benefits of the described embodiments are not only realized by a server computing device, but also by each client computing device that as an application in need of a particular file update. Indeed, developers and/or distributors of a particular application can use the described embodiments to both minimize computational resource costs while also quickly and efficiently deliver patch files to a variety of different client computing devices so that users of the application can use an up-to-date version of the application that includes minimal defects.
Next, at step 708, the client computing device updates the file to the latest version of the file based at least in part on (1) the contents of the patch file and (2) the previous version of the file. Next, at step 710, the client computing device determines whether the update process was interrupted. If the update process was interrupted, then the client computing device updates the file to the latest version of the file based at least in part on (1) the contents of the patch file and (2) the copy of the previous version of the file, as detailed at step 714. Otherwise, the client computing device successfully completes the installation of the latest version of the file, as detailed at step 712. Next, at step 716 in
As noted above, the computing device 800 also include the storage device 840, which can comprise a single disk or a collection of disks (e.g., hard drives), and includes a storage management module that manages one or more partitions within the storage device 840. In some embodiments, storage device 840 can include flash memory, semiconductor (solid state) memory or the like. The computing device 800 can also include a Random-Access Memory (“RAM”) 820 and a Read-Only Memory (“ROM”) 804. The ROM 804 can store programs, utilities or processes to be executed in a non-volatile manner. The RAM 820 can provide volatile data storage, and stores instructions related to the operation of applications executing on the server computing device 102, including the delta calculation engine 110, the delta file generation module 112, the update package generation module 114, and the cache delta file manager 116.
The foregoing description, for purposes of explanation, used specific nomenclature to provide a thorough understanding of the described embodiments. However, it will be apparent to one skilled in the art that the specific details are not required in order to practice the described embodiments. Thus, the foregoing descriptions of specific embodiments are presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the described embodiments to the precise forms disclosed. It will be apparent to one of ordinary skill in the art that many modifications and variations are possible in view of the above teachings.
The present application is a divisional of U.S. application Ser. No. 15/823,376, filed Nov. 27, 2017, entitled “TECHNIQUES FOR UPDATING A FILE USING A MULTI-VERSION PATCH FILE,” which claims the benefit of U.S. Provisional Application No. 62/588,286, entitled “TECHNIQUES FOR UPDATING A FILE USING A MULTI-VERSION PATCH FILE,” filed Nov. 17, 2017, the contents of all of which are incorporated by reference herein in their entirety for all purposes.
Number | Date | Country | |
---|---|---|---|
62588286 | Nov 2017 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 15823376 | Nov 2017 | US |
Child | 17141166 | US |