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 zsync|https://server.domain/path/Application-latest-x86_64.AppImage.zsync
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 gh-releases-zsync|probono|AppImages|latest|Subsurface-*x86_64.AppImage.zsync
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 bintray-zsync|probono|AppImages|Subsurface|Subsurface-_latestVersion-x86_64.AppImage.zsync
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.