Diffusion Krita 1a76c31c140e

Make appimages updateable

Authored by amedonosova on Aug 29 2019, 6:32 AM.

Description

Make appimages updateable

This merge request is implementing self-update capabilities for
AppImages inside Krita. Apart from integration of the tools into Krita's
codebase, there are also updated scripts for AppImage building and icons
for update channels.

There are multiple parts to this patch:

  1. C++ code for integration of AppImageUpdate and changes to previous

update notifications Both of those options are called Updaters. There
is:

  • The Manual Updater, which is in fact a fancy name for checking for

new version on the website and displaying a message to the user together
with a link to the release notes. This is the original update
notification code, I have slightly modified version checking and moved
the code into it's own class.

  • The AppImage Updater, which is used if

Krita detects that it runs from an AppImage. This updater can actually
download new version of Krita, if it is available.

  1. updated scripts for building appimages I have added code to bundle

AppImageUpdate into the AppImage being built. Also, the build scripts
infer the update channel (stable, Beta, Plus or Next) from a combination
of Krita version and git information. This info is used for setting up
proper update channel and selecting the right branding option. I have
also added helper scripts for signing the already built AppImage
(sign_appimage.sh, generate_zsync.sh; also strip_appimage_signature.sh and
validate_appimage_signature.sh for debugging purposes) and rewriting
update information of the built AppImage (update_updinfo.sh).

  1. icons for update channels I have added icons I made for myself to

make sense of all my AppImages. The icons are in krita/pics/branding,
together with a script for generating all icon sizes from svg
(generate_icons.sh).

Changes to building - there are two new cmake flags:

  • ENABLE_UPDATERS (bool, can be ON or OFF) - this flag toggles all updater code, both the appimage updating and update notifications
  • BRANDING (string, can be default, Beta, Plus, or Next) - this flag controls which app icons will be installed