[wpkg-users] Upgrade Skips Checks

Rainer Meier r.meier at wpkg.org
Tue Feb 21 12:05:09 CET 2012


Hi Matthew,

On 21.02.2012 11:50, Matthew Bowman wrote:
> I've recently found myself in an odd situation. I recently upgraded a
> package that had an exit code of -3 (Install Shield - missing info in
> setup.iss file). This was not listed in the package.xml as success so
> therefore wpkg was not recording the package as installed (it retained
> the old version). However the package did install correctly. Now when my
> clients boot (I'm using Wpkg-GP), they upgrade the package again even
> though the check passes and wpkg should simply mark the package as
> installed.
>
> Conclusion: I believe wpkg.js does not execute the check before
> attempting an upgrade

This is true. If WPKG discovers a new revision in the package it will perform an 
upgrade - not performing checks before. The reason is simple. Many checks just 
perform checks whether the application is installed and do not verify it's 
version. So if WPKG would perform a check before upgrading then most packages 
will NEVER do an upgrade since the checks of the new package will often also 
return true for the old package so WPKG would think the upgrade already took place.


> I believe if a package is going to be upgraded, the the checks
> associated with that specific revision of the package should be ran just
> like if that package was going to be installed (not upgraded). If the
> checks pass, simply mark the package as installed/upgraded and move on.
> This would prevent a "double upgrade" from happening which is what I am
> experiencing.

This is true only for packages where the checks do really assure that a specific 
version of a software is installed.

But don't worry, we have thought about this situation already and it is already 
implemented. Just add the precheck-upgrade="always" flag to your package.
e.g.

<package revision="..." precheck-upgrade="always" ... />

This will do exactly as you requested. It will execute checks before doing an 
upgrade in order to determine if the upgrade already took place.

And no, due to the reasons above "always" will not be the default. In Most cases 
such a pre-check is not desired. Please make sure that your package where you 
enable precheck-upgrade does perform a very clear check for the application 
version. This check shall fail for the old version but succeed for the new 
version. For example this is true if you check for uninstall entry which has the 
version number inside the entry. Like checking for "Audacity 1.2.6".

In particular checking for something like "Pidgin" would be insufficient as WPKG 
would never ever perform an upgrade of Pidgin since the check would be true for 
the old and the new version. So for applications like Pidgin you would have to 
add additional checks to verify by uninstall version, binary version, file size, 
file date or whatever in order to allow WPKG to distinguish whether the update 
is done properly already.

br,
Rainer



More information about the wpkg-users mailing list