The AppImage Update process¶
An AppImage can be updated by just downloading the latest whole binary from the author or using delta updates. The second method is much more efficient as it only downloads the parts that changed, therefore, it’s faster. Also the appimageupdatetool checks the file signature (if present) to ensure that the downloaded file is legit.
The appimageupdatetool uses the the zsync method to do the delta update. Therefore a
.zsync file is required
for the updates to work. The file url is embed into the AppImage, this is known as the update information. There are
several ways of specifying this url:
According to the specification an AppImage MAY have update information embedded for exactly one transport mechanism. Currently three transport mechanisms are available, but only one can be used for each given AppImage. Below we describe then in detail.
The zsync transport requires a HTTP server that can handle HTTP range requests. Its update information is in the form:
zsync|<zsync file URL>, by example
The GitHub Releases transport extends the zsync transport in that it uses version information from GitHub Releases. Its update information is in the form:
gh-releases-zsync|<name space>|<project>|latest|<zsync file name>, by example
The bintray-zsync transport extends the zsync transport in that it uses version information from
Bintray. Its update information is in the form:
bintray-zsync|<username>|<repository>|<package name>|<zsync file path>, by example
Setting AppImage update information¶
Before setting the update information make sure that
zsync is installed in the build system. Then just add the update
information line according to the selected method in
AppImage >> update-information like this
AppImage: update-information: gh-releases-zsync|probono|AppImages|latest|Subsurface-*x86_64.AppImage.zsync arch: aarch64
Once the build finish there will be a
.zsync file next to the AppImage one. You should publish both of then
according to the chosen update protocol.