[wpkg-users] WPKG 1.1.0 reboot loop during upgrade
Rainer Meier
r.meier at wpkg.org
Tue Jul 7 14:18:18 CEST 2009
Hi Mark,
Mark Cooke wrote:
> I have just provoked a slightly unexpected behaviour with v1.1.0 of wpkg.js
>
> Conditions:
>
> 1. Package requires a reboot after it is installed or upgraded (removed &
> re-installed). I have the reboot condition set in the install/upgrade
> section for specific exit conditions.
>
> 2. WPKG Check conditions between the existing version and updated version
> are the same.
>
> 3. To do the upgrade, I just increased the revision from 1 to 2.
>
>
> WPKG logs indicate a successful upgrade, with an immediate reboot. However,
> on the next reboot, the revision check fails. The implication is that
> requesting an immediate reboot during an upgrade causes a reboot before
> wpkg.xml has been rewritten with the successful revision data.
>
> Is this a bug, or am I misunderstanding ?
It seems you're hitting a very special situation. Commands which require an
immediate reboot are usually commands which cannot finish without rebooting and
therefore it makes no sense for WPKG to verify if a package is
installed/upgraded correctly before this reboot was done.
I think in your case you should schedule a postponed or delayed reboot for your
command instead of an immediate one (reboot="delayedReboot"). This makes sure
all upgrade commands are run before the reboot takes place.
The immediate reboot should be used only if a command requies a one-time reboot
and it will exit with a different code on next execution. For example if an
install/upgrade gommand requires a reboot to install a service and exits with
another code next time because the service is already in place and up-to-date.
In your case your installer seems to exit always with a code which requires a
reboot. In this case it's clear that WPKG will always issue an immediate reboot
after its execution. If your installer is somehow "dumb" and it always exits
with a reboot instruction but actually the reboot is required only one single
time then you need to assure yourself that the exit code indicates a reboot only
once.
A simple wrapper-script might do the job too....
@echo off
echo Installing
set FLAG=%TEMP%\installer-done
if exist "%FLAG%" goto continue
goto install
:install
start /wait "running installer" "%SOFTWARE%\installer.exe" /S
REM set flag
echo done > "%FLAG%"
REM reboot system
exit /b 3010
:continue
del "%FLAG%"
exit /b 0
It's not tested but this should assure that the reboot exit code (3010) is sent
only once. After the reboot it will exit with code 0 and WPKG can continue to run.
However this is just a work-around if an installer (wrongly) exits with a reboot
exit code even if the software is already installed properly.
I suggest trying the postponed/delayed reboot instead.
br,
Rainer
More information about the wpkg-users
mailing list