System and method for difference-based software updating
First Claim
1. A method of software updates, the method comprising:
- (a) at a server, generating a set of differences between a latest version of a file and a plurality of prior versions of the file, wherein the differences convert any of the plurality of prior versions into the latest version, but not to any other version;
(b) publishing the set of differences for downloads by clients, wherein, when size overhead from downloading and applying a difference is greater than size overhead associated with downloading an entire file, that difference is not published;
(c) in response to a client requesting an update to a client'"'"'s version of the file and the client providing an identifier that defines the client'"'"'s version of the file, providing, to the client, a difference between the client'"'"'s version of the file and a latest version of the file;
(d) maintaining a state description file representing files subject to update, wherein the state description file is downloaded to the client, and wherein the client requests the update based on the state description file; and
(e) removing at least some earlier-generated differences.
1 Assignment
0 Petitions
Accused Products
Abstract
A system, method and computer program product for software updates includes (a) generating a set of differences between a latest version of a file and a plurality of prior versions of the file, wherein the differences convert any of the plurality of prior versions into the latest version, but not to any other version; (b) publishing the set of differences; and (c) providing, to the client, in response to a client requesting an update to a client'"'"'s version of the file and the client providing an identifier corresponding to the client'"'"'s version of the file, a difference between the client'"'"'s version of the file and one of (i) the latest version of the file, and (ii) a version of the file prior to the latest version.
-
Citations
19 Claims
-
1. A method of software updates, the method comprising:
-
(a) at a server, generating a set of differences between a latest version of a file and a plurality of prior versions of the file, wherein the differences convert any of the plurality of prior versions into the latest version, but not to any other version; (b) publishing the set of differences for downloads by clients, wherein, when size overhead from downloading and applying a difference is greater than size overhead associated with downloading an entire file, that difference is not published; (c) in response to a client requesting an update to a client'"'"'s version of the file and the client providing an identifier that defines the client'"'"'s version of the file, providing, to the client, a difference between the client'"'"'s version of the file and a latest version of the file; (d) maintaining a state description file representing files subject to update, wherein the state description file is downloaded to the client, and wherein the client requests the update based on the state description file; and (e) removing at least some earlier-generated differences. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A system for software updates comprising:
-
(a) a processor and memory; (b) a latest version of the file; (c) a plurality of prior versions of a file; (d) a set of differences between the latest version of a file and the plurality of prior versions of the file, wherein the differences convert any of the plurality of prior versions into the latest version, but not to any other version; (e) a server on which the set of differences are published for downloads, wherein, when size overhead from downloading and applying a difference is greater than size overhead associated with downloading an entire file, that difference is not published, wherein, in response to a client requesting an update to a client'"'"'s version of the file and the client providing an identifier that defines the client'"'"'s version of the file, the server provides, to the client, a difference, out of the set of differences, between the client'"'"'s version of the file and a latest version of the file, at the server, a state description file representing files subject to update, wherein the state description file is downloaded to the client, and wherein the client requests the update based on the state description file; and means for removing at least some earlier-generated differences. - View Dependent Claims (10, 11, 12, 13)
-
-
14. A method of software updates, the method comprising:
-
a) at a server, generating a set of differences between a latest version a file and each previous version of the file, wherein the difference contain information to convert a file to a subsequent version of the file up to the latest version; b) publishing the differences on an update source, wherein, when size overhead from downloading and applying a difference is greater than size overhead associated with downloading an entire file, that difference is not published; c) in response to a client requesting an update to a client'"'"'s version of the file and the client providing an identifier that defines the client'"'"'s version of the file, providing, to the client, differences between the client'"'"'s version of the file and one of the subsequent version of the file, up to latest version of the file; (d) maintaining a state description file representing files subject to update, wherein the state description file is downloaded to the client, and wherein the client requests the update based on the state description file; and (e) removing at least some earlier-generated differences.
-
-
15. A method of software updates, the method comprising:
-
(a) at a server, generating a set of differences between a latest version of a file and a plurality of prior versions of the file, wherein the differences convert any of the plurality of prior versions into the latest version, but not to any other version; (b) publishing the set of differences, wherein, when size overhead from downloading and applying a difference is greater than size overhead associated with downloading an entire file, that difference is not published; and (c) in response to a client requesting an update to a client'"'"'s version of the file and the client providing an identifier corresponding to the client'"'"'s version of the file, providing, to the client, a difference between the client'"'"'s version of the file and one of (i) the latest version of the file, and (ii) a version of the file prior to the latest version; (d) maintaining a state description file representing files subject to update, wherein the state description file is downloaded to the client, and wherein the client requests the update based on the state description file; and (e) removing at least some earlier-generated differences.
-
-
16. A method of software updates, the method comprising:
-
(a) on a client-side, for a file to be updated, generating an identifier of the file, wherein the identifier includes on any of a hash of the file, a checksum of the file, a timestamp of the file, a version number of the file and a digital signature of the file; (b) transmitting the identifier to a server; (c) receiving, from the server, a difference between a latest version of the file and the file on the client-side, the difference determined based on the identifier and the latest version of the file, wherein the difference corresponds to an update from a current version of the file to the latest version of the file, and wherein, when size overhead from downloading and applying a difference is greater than size overhead associated with downloading an entire file, that difference is not published; and (d) on the client-side, updating the file to be updated based on the difference; (e) downloading a state description file representing files subject to update, wherein the state description file is downloaded to the client, and wherein the client requests the update based on the state description file.
-
-
17. A system for software updates comprising:
-
(a) a processor and memory; (b) for a file to be updated, means for generating a file name that includes on any of a hash of the file, a checksum of the file, a timestamp of the file, a version number of the file and a digital signature of the file; (c) on a client-side, means for transmitting the file name to a server; (d) means for receiving, from the server, a difference between a latest version of a file and the file on the client-side, the difference determined based on the file name and the latest version of the file, wherein the difference corresponds to an update from any prior version of the file to the latest version of the file, and wherein, when size overhead from downloading and applying a difference is greater than size overhead associated with downloading an entire file, that difference is not published; and (e) a difference updater that updates the file based on the difference; (f) a state description file representing files subject to update that is generated from the server, wherein the state description file is downloaded to the client, and wherein the client requests the update based on the state description file.
-
-
18. A computer usable storage medium having computer program logic for software updates stored thereon, the computer program logic used for executing on a processor, the computer program logic comprising:
-
computer program code means for generating, at a server, a set of differences between a latest version of a file and a plurality of prior versions of the file, wherein the differences convert any of the plurality of prior versions into the latest version, but not to any other version; computer program code means for publishing the set of differences for downloads by clients, wherein, when size overhead from downloading and applying a difference is greater than size overhead associated with downloading an entire file, that difference is not published; computer program code means for, in response to a client requesting an update to a client'"'"'s version of the file and the client providing an identifier that defines the client'"'"'s version of the file, providing, to the client, a difference between the client'"'"'s version of the file and the latest version of the file, the difference determined based on the file name, wherein the difference corresponds to an update from client'"'"'s current version of the file; computer program code means for maintaining a state description file representing files subject to update, wherein the state description file is downloaded to the client, and wherein the client requests the update based on the state description file; and computer program code means for removing at least some earlier-generated differences.
-
-
19. A computer useable storage medium having computer program logic for software updates stored thereon, the computer program logic used for executing on a processor, the computer program logic comprising:
-
(a) for a file to be updated, on a client side, computer program code means for generating, at a server, a file name that includes on any of a hash of the file, a checksum of the file, a timestamp of the file, a version number of the file and a digital signature of the file; (b) computer program code means for means for transmitting the file name to the server; (c) computer program code means for receiving, from the server, a difference between a latest version of a file and the file on the client-side, the difference determined based on the file name and the latest version of the file, wherein the difference corresponds to an update from any prior version of the file to the latest version of the file; (d) computer program code means for updating the file based on the difference; (e) computer program code means for maintaining a state description file representing files subject to update, wherein the state description file is downloaded to the client, and wherein the client requests the update based on the state description file.
-
Specification