Join GitHub today
GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.Sign up
A(n) (Auto) Updater for Linux (AppImages) using delta update #5643
Currently auto updater is only available for windows but not for Linux , specifically qTox AppImages does not support update. But AppImage does support updating officially using zsync's algorithm. Zsync algorithm is used to do the delta update , the entire update only depends on github releases or a simple http server with http range requests.
So I think it would be nice if qTox implements an auto update for AppImage releases.
I would be happy to work on this if you would like that.
AppImage update can be implemented using AppImageUpdaterBridge (written in C++ using Qt5 which only depends on Qt base) (Made by me) or you could use the official AppImage update library also written in C++ but does not depend on Qt so it uses curl and other stuff for networking.
I highly recommend using my library since it only depends on Qt and thus does not add extra dependency for your application. The official documentation is here
For a reference you can take a look at this application which uses AppImageUpdaterBridge to do the delta update for the appimage -> https://gitlab.com/technic93/e2designer/-/jobs/202568868/artifacts/raw/build/e2designer-v0.1-365-g80ca747-x86_64.AppImage (To start the updater , Help -> Check for update)
Because the zsync algorithm is old and the sources are also old(It was programed in C with hard coded http client). It also did not have support for modern http servers like what github uses. Mainly I wanted to re-implement it in C++ and Qt to make it more maintainable and portable , this library was specially created for Qt Applications. Unlike the official library and old sources , this library respects the Qt Event Loop. Therefore using this library will not break anything and does not add any other issues..
Yes it does. You have to pass a QNetworkProxy to AppImageDeltaRevisioner or you can set application wide proxy using
Head to this link for example.
@sudden6 Here is how the update should look like...
EDIT: AppImageUpdater can be used without re-compiling from source. Using qt plugin you can do this by just adding the plugin and repacking it with appimagetool. Here is a small hint on how to do it -> antony-jr/AppImageUpdaterBridge#7 (comment)
Usually the update uses most of the required data from the old appimage but in this case , My new AppImage has new version of Qt , so the updater has to download that deltas too.
You can take a look at my implementation done in my fork -> https://github.com/antony-jr/qTox/tree/appimage-self-update