Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Auto updater for app image #8923

Closed
jnweiger opened this issue Aug 19, 2021 · 11 comments
Closed

Auto updater for app image #8923

jnweiger opened this issue Aug 19, 2021 · 11 comments
Assignees
Labels
Milestone

Comments

@jnweiger
Copy link
Contributor

Seen in testpilotcloud-2.9.0-beta1.4914.AppImage

image

This suggestion does not work. Appimages cannot e updated with the system's update tool.

Expected behaviour:

  • "... Please download the new appimage manually" (if possible mention the URL!) or
  • best: have a builtin updater in the appimage
@jnweiger jnweiger mentioned this issue Aug 19, 2021
39 tasks
@TheOneRing TheOneRing changed the title [QA] appimage update notification mentions the "system's update tool" Auto updater for app image Aug 19, 2021
@TheOneRing TheOneRing added this to the 2.10.0 milestone Aug 19, 2021
@TheOneRing TheOneRing modified the milestones: 2.10.0, 2.9.0 Aug 26, 2021
@fmoc
Copy link
Contributor

fmoc commented Aug 26, 2021

I think the issue should refer to "self-updating", not "auto-updating". We want to embed some kind of updater that can use the update server information.

To update AppImages, there is AppImageUpdate, which updates AppImages using the zsync algorithm. Contrary to other solutions, one does not have to build diff files. Instead, you have to publish a .zsync file. This file contains information on where to find the entire new AppImage, as well as block hash sums. AppImageUpdate generates those hash sums locally as well, and can then compare the hashes, download all the blocks that changed, copy the blocks that have not changed from the existing file, and thus create a new file next to the old while downloading only the bits that truly changed.

This seems to work quite well, given the way AppImages are built. As long as files have not changed, they should not be downloaded, as the AppImage payload format, squashfs, stores them the exactly same way.

By default, AppImageUpdate contains the location of the .zsync file in the ELF executable header. This information is supposed to be static. This means that, if we want to offer AppImageUpdate, we have to embed such a URL that points to a file on our servers. This URL would have to be static. We could not make it read the information from our update server API. More information is available in the AppImage specification draft.

To integrate self-update capabilities, we could integrate AppImageUpdate directly. It provides a Qt UI that can be bundled into other tools. There is also a reimplementation in pure Qt called QAppImageUpdate, which seems to be incomplete (e.g., it is missing signature validation, which is provided by AppImageUpdate). Both solutions at the moment mandate the use of the update information.

Whichever implementation we pick to bundle with our client, we need to discuss whether we want to use the update information system (which basically eliminates the need for using our own update servers, because update checks etc. can be done directly using the AppImageUpdate algorithms), or whether we want to contribute to either solution to be able to pass our own .zsync URL upon construction.

As the upstream AppImageUpdate supports signature validation, and we recently implemented signing (see #8875), I would rather use this solution.

@fmoc fmoc added the Linux label Sep 2, 2021
@TheOneRing TheOneRing modified the milestones: 2.9.0, 2.9.1, 2.9.2 Sep 9, 2021
@fmoc fmoc modified the milestones: 2.10, 2.11, 2.10.0 Jan 11, 2022
@TheOneRing TheOneRing modified the milestones: 2.10, 2.11 Jan 21, 2022
@fmoc
Copy link
Contributor

fmoc commented Mar 14, 2022

Closed by #9376.

@bishwasojha
Copy link

bishwasojha commented Nov 9, 2022

In Client for Updates, there is following text in Updates heading

  • Update status is unknown: Did not check for new updates.

When click on this, nothing happens

Screenshot
Screenshot from 2022-11-09 13-04-14

ownCloud version

ownCloud 3.1.0.9010-daily20221105 [f06653](https://github.com/owncloud/client/commit/f06653068b84316e2e979537c66970b70b087ecd)
Libraries Qt 5.15.5, OpenSSL 1.1.1q 5 Jul 2022
Using virtual files plugin: suffix
ubuntu-5.15.0-52-generic

@fmoc
Copy link
Contributor

fmoc commented Nov 9, 2022

The production update server has not been updated yet. It will be updated with the final release of 3.0.0.

@individual-it
Copy link
Member

@fmoc so this cannot really be tested, I will put this int no test needed
CC @HanaGemela

@individual-it individual-it moved this from Todo to No test needed in Desktop Testing Nov 10, 2022
@michaelstingl
Copy link
Contributor

With beta1 and rc's , production update server should be updated, but only for testpilotcloud builds. Vanilla updates after final release. But QA team has it's own updater server, to tests independently from the production one.

@fmoc
Copy link
Contributor

fmoc commented Nov 10, 2022

@individual-it testpilotcloud should work indeed. And you can set up your own update server, too, if you like to. I use https://github.com/fmoc/minimal-update-server/.

Edit: looks like @michaelstingl was faster.

Edit 2: To use a different update server, you need to set OCC_UPDATE_URL as explained minimal-update-server's README.

@individual-it individual-it moved this from No test needed to Todo in Desktop Testing Nov 14, 2022
@saw-jan
Copy link
Member

saw-jan commented Nov 17, 2022

Update is there. Update pops up at the startup as well

Screenshot from 2022-11-17 16-20-33

@saw-jan saw-jan moved this from Todo to Done in Desktop Testing Nov 17, 2022
@saw-jan
Copy link
Member

saw-jan commented Nov 30, 2022

There is no update available from RC2 to RC3

Tested on Testpilotcloud (rc2) in ubuntu22.04 and windows 10

CC @TheOneRing @fmoc

@TheOneRing
Copy link
Contributor

rc3 was not yet pushed to the updater

@saw-jan
Copy link
Member

saw-jan commented Nov 30, 2022

rc3 was not yet pushed to the updater

It works now!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
No open projects
Status: Done
Development

No branches or pull requests

7 participants