AppImage Updates¶
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:
Update information¶
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.
zsync¶
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
GitHub Releases¶
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
bintray-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
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.