Digital-Sapphire / PyUpdater

Pyinstaller auto-update library
https://www.pyupdater.org
460 stars 92 forks source link

Why does the PyUpdater download the zip file even there are a patch files? #308

Closed Mezo1234-beep closed 2 years ago

Mezo1234-beep commented 3 years ago

Hello. First of all, thank you for this awesome library.

My question is: Why does the PyUpdater download the zip file even there is a patch file? Let's say I have v 1.0.0 and I deployed the zip file with versions.gz and keys.gz. And then I made a new version which is 1.0.1, The PyUpdater created the appname-1.0.1.zip and --appname2 (patch file)-- and of course the keys and versions file updated as well, and I upload them to the server. And let's say I made one more version which is 1.0.2 same as the previous steps.

Now, If I run the 1.0.0 app it will download the latest zip file which is, in this case, 1.0.2 because there is no previous archive in C:/user/AppData/CompanyName/Updater, And that's fine for now.

And I wanted is to prevent downloading the zip file, So I added appname-1.0.0.zip (which is the first version) manually to the C:/user/AppData/CompanyName/Updater, And now it should download only the patches file appname-2 and appname-3 and apply them in order to create the appname-1.0.2.zip but it downloads the zip file instead.

But if I added appname-1.0.1.zip instead to c:/user/AppData/CompanyName/Updater, And run version 1.0.0 it will download the patch.

So how to prevent the PyUpdater from downloading the whole app (zip) because it doesn't make sense after installing the app if there was a new update it will re-download the whole app again, even if the first zip version is in the AppData folder it should download and apply the patches.

dennisvang commented 2 years ago

@Moaaz421 Difficult to answer without more information, such as:

Setting logging level to DEBUG and posting the (relevant parts of) output would surely help.

If I had to guess:

Are you passing the correct version into Client.update_check()? Are both your 1.0.0 and 1.0.1 versions in the version manifest?

The patch process checks the existence of the current archive, based on the archive name obtained from the version manifest (i.e. versions.gz) and the current version you specified. If the specified current version is not in the version manifest, a full download is started. The version manifest itself is downloaded from the server every time you do an update check (with a local fallback).