[wpkg-users] How to remove the package but leave the software installed

Rainer Meier r.meier at wpkg.org
Sun Jul 4 11:35:28 CEST 2010


Hi David,

On 04.07.2010 01:40, David Petterson wrote:
> I have been using WPKG to force installation of Windows XP updates, and
> are now switching to a WSUS server.
> 
> So the question for you all:
> Is there a way to force remove the package information from the clients
> without running any remove commands?
> 
> Solutions I have though of and why they wont work.
> 2.
> Solution: Create a new revision of all packages and remove the
> "remove"-entries. Then after all clients have got the new revision,
> remove the packages from the computer profile and remove/rename the
> packages to force removal of the package on the client.
> 
> Problem: We have a lot of users working on laptops, some are away for
> months (up to a year in some cases) and I have no idea when all
> computers have received the updated packages. (this was the first reason
> why I started to use WPKG to force install updates on the computers when
> they get back to campus. With WSUS I can force install critical updates
> by setting a deadline)

Solution 2 looks more the way I would recommend you to go.

In fact you could rely on the upgrade-before-remove feature of WPKG to achieve
this. WPKG will always upgrade to the latest package revision before performing
the remove. So you might use this upgrade to replace the package definition with
a package which removes cleanly without touching the system.

Package mock-up:

<?xml version="1.0" encoding="utf-8" ?>
<packages>

<package id='KBxxxxxx' name='Windows update KBxxxxxx' revision='2' priority='50'
reboot='false' >
  <check type='file' condition='exists' path='%TEMP%\KBxxxxx' />

  <install cmd='%COMSPEC% /c echo installed > "%TEMP%\KBxxxxxx"' />
  <upgrade cmd='%COMSPEC% /c echo installed > "%TEMP%\KBxxxxxx"' />
  <remove cmd='%COMSPEC% /c rm "%TEMP%\KBxxxxxx"' />
</package>

</packages>



Then remove the package reference from the profile.
Please note that you should do this with all your update packages.
When WPKG runs it will detect that all update packages are supposed to be
removed (removed from profile). Then it will first check if there is an update
to these packages. Since you incremented the revision there will be an update to
all these packages.

All of them will now simply replace the package with the "dummy" entry I
proposed above. The upgrade will succeed since the upgrade command writes a
dummy file in %TEMP%. Now the packages are ready to be removed without
performing any real action on the system. WPKG will (immediately after the
upgrade) start the remove process. As defined above it will delete the temporary
file and after remove the check is supposed to fail -> package removed successfully.

As all this happens in one step you do not have to wait until all your hosts
processed the upgrade. Just leave this dummy entries in your package database
and whenever a client connects (might happen after months) the package will
simply be removed from the client without performing any uninstall of the patch.


Please carefully test it. I never had to do it since I always thought deploying
software/patches which can be automatically deployed with update mechanisms like
Windows-Update is a bad idea. In fact I hope that Microsoft will extend Windows
Update to a kind of "app-store" and open it for 3rd party suppliers so users can
simply click on the apps they would like to install and automatically get
updates for all of them. This would render WPKG obsolete as long as all
applications you need are in the app-store.

br,
Rainer



More information about the wpkg-users mailing list