Code Monkey home page Code Monkey logo

qtupdatesystem's Introduction

QtUpdateSystem

Windows build status Linux / OSX build Status

Provide an easy to use and very efficient update system for small to big archives. With this library you can auto update your application or whatever you want (size limit is at 2^64-1) with only a static file based repository.

This library is still experimental and currently used by the Stargate No Limits and Stargate Network teams to publish their updates.

The goals of this library is to provide a very efficient system to update files by :

  • minimizing the download size as much as possible
  • no more cost than serving static files for the HTTP server
  • working over HTTP(s) with optional basic authentication
  • publishing updates in a matter of seconds
  • checking & applying updates while downloading files
  • automatic error handling and files corrections
  • checking local file integrity

To achieve thoses goals this library depends on :

How to install

Once you have cloned this repository, the prefered way to compile the library is to use the cmake build suite.

How to use

The library is composed of 3 classes :

  • updater : for client side update
  • packager : for packages creation
  • repository : for managing packages and versions

Here is list of the most useful functions and a brief description of what it does

Updater

  • checkForUpdates : check from the remote repository if an update is available
  • update : update files
  • copy : copy the repository to another place

Packager

  • generate : generate a package

Repository

  • addPackage : add a package to the repository
  • removePackage : remove a package from the repository
  • simplify : remove useless packages
  • setCurrentRevision : change the current revision of the repository

qtupdatesystem's People

Contributors

speedy37 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

qtupdatesystem's Issues

Version 2

Recent change to xdelta licensing, the apparition of the brotli compressor and new goals of the Stargate Network project are leading me to create a better version of this library.

Here is the TODO list:

  • brotli encoder/decoder (static linking)
  • xdelta3 encoder/decoder (static linking)
  • lzma encoder/decoder (static linking)
  • refactoring

Integrity control

Is there an option to check local repo integrity if a file or folder is missing ?

Copy repository

Add a function to the Updater to create a copy of the repository in a safe way.

Use a dedicated exception class for throwing exceptions

Actually, exception are mostly thrown QString.
Having a special class for throwing exceptions would allow feature like :

  • Detect what as gone wrong with ease and apply the best fix automatically
  • Log the exception, the related context, etc.
    ...

Repo clone

Is it possible to push a new repo version on remote server ?

Update to another directory

Add the capability to update a directory to another directory.
For example, if you want to make a application that use this lib to autoupdate itself.

Keep a list of managed files

On local side, the status file should maintain a list of managed files
On repository side, metadata information must contains a list of all files and not just a list of what have changed.

Cache metadata

Actually, fixing updates errors requires re download of often previously downloaded metadata files.
Caching them until the update finished could speed up fixing times a lot. Specially when there is a lot of small files than have failed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.