http://www.chromium.org/developers/design-documents/software-updates-courgette
上面是google chromium使用的自动更新机制,可以借鉴,她利用比较汇编代码的不同减少更新的数据量,
另外还有一个
https://code.google.com/p/omaha/ 据说这个配置比较复杂。
We use Omaha for our products. Initially there was quite a bit of work to change hardcoded URLs and strings. Also the server is not open source, but the protocol is well documented so it was not difficult to create a compatible server using Google App Engine.
Software Updates: Courgette
How Courgette works
As I described in
Smaller is faster (and safer too), we wrote a new differential compression algorithm for making Google Chrome updates significantly smaller.
We want smaller updates because it
narrows the window of vulnerability. If the update is a tenth of the size, we can push ten times as many per unit of bandwidth. We have enough users that this means more users will be protected earlier. A secondary benefit is that a smaller update will work better for users who don't have great connectivity.
Rather than push put a whole new 10MB update, we send out a diff that takes the previous version of Google Chrome and generates the new version. We tried several binary diff algorithms and have been using
bsdiff up until now. We are big fans of bsdiff - it is small and worked better than anything else we tried.
But bsdiff was still producing diffs that were bigger than we felt were necessary. So we wrote a new diff algorithm that knows more about the kind of data we are pushing - large files containing compiled executables. Here are the sizes in bytes for the recent 190.1->190.4 update on the developer channel:
|