[wpkg-users] Package still installed...

Rainer Meier r.meier at wpkg.org
Tue Jan 10 18:31:04 CET 2012


Hi Cedric,

On 10.01.2012 18:13, Cedric Frayssinet wrote:
> I've a little problem with a package. This is a french software, named Risbee :
> http://www.pob-technology.com/upload/softwares/risbee-3.1.0-setup.exe
>
> This is a NSIS package, and my classic XML is :
>
>     <package
>             id="Risbee"
>             name="Risbee - Programmation graphique de robots"
>             revision="%version%.1"
>             priority="10"
>             reboot="false" >
>
>     <variable name="version" value="3.1.0" />
>
>     <check type="uninstall" condition="exists" path="Risbee" />
>     <install cmd='"%SOFTWARE%\Risbee\risbee-%version%-setup.exe" /S' />
>     <upgrade cmd='"%SOFTWARE%\Risbee\risbee-%version%-setup.exe" /S' />
>     <remove cmd='"%PROGRAMFILES%\POB-Technology\Risbee\uninstall.exe" /S' />
>     </package>
>
>
> Install and Upgrade are ok.
>
> Command line for removing is ok (tested manually -> no more Risbee on add/remove
> programs-), but my local wpkg.xml is not updated, and package still installed,
> so next reboot, installation and remove restart again...

Very likely the uninstall is not really working properly. Check WPKG logs, it's 
very likely stating that either your remove command did not exit with "success" 
exit code of 0 or that uninstall value still exists ("failed checking after 
remove").

There are a couple of possibilities for it:
1. Your uninstall.exe forks a sub-process and does not wait for Risbee to be 
removed before it exits.

2. Remove does not work properly (e.g. due to PROGRAMFILES not being defined, or 
on 64-bit edition installation is in %ProgramFiles(x86)% instead).


For the first option (very likely) uninstall.exe terminates before the remove of 
the uninstall entry takes place, so WPKG runs the check and finds it still 
installed. People have been reporting that sometimes adding the "_?" parameter 
works for NSIS uninstaller.

<remove cmd='"%PROGRAMFILES%\POB-Technology\Risbee\uninstall.exe" /S 
_?="%PROGRAMFILES%\POB-Technology\Risbee"' />

If this does not work, then try uninstalling using the script I've recently posted:


@echo off
:: This is required to evaluate the target of %ProgramFiles% on 64-bit systems
:: Please note that this is required only if you uninstall a 32-bit application.
set PROGRAM_FILES=%ProgramFiles%
if not "%ProgramFiles(x86)%" == "" set PROGRAM_FILES=%ProgramFiles(x86)%

::Application install folder
set APP_DIR=%PROGRAM_FILES%\POB-Technology\Risbee

:: Path to the uninstaller (see path definition above)
set UNINSTALLER=%APP_DIR%\uninstall.exe

:: Options to be passed to the uninstaller in order to uninstall silently
set OPTIONS=/S

if not exist "%UNINSTALLER%" goto good_end
start /wait "Uninstall" "%UNINSTALLER%" %OPTIONS%
start "Uninstall" "%UNINSTALLER%" %OPTIONS%
REM Unfortunately the uninstaller seems to fork a child process and the parent
REM process exits immediately. So give it some time to uninstall
for /L %%C IN (1,1,30) DO (
   if not exist "%UNINSTALLER%" goto good_end
   ping -n 2 127.0.0.1 > NUL
)
:bad_end
exit /B 1

:good_end
if exist "%APP_DIR%" rmdir /s /q "%APP_DIR%"
exit /B 0



br,
Rainer



More information about the wpkg-users mailing list