===============================================================================
= CHANGES FOR 1.1 release
===============================================================================

Change notes
============

WPKG Version: 1.1.0-M3
Author:     : Rainer Meier <skybeam (at) users.sourceforge.net>
Date        : 2008-04-05

Changes/fixes visible to the user:

Summary:
- Fixed crash when /force was used in conjunction with /synchronize
- Do not force quit if installation fails (unsless /qutonerror is set)
- Extended uninstall check (check for DisplayVersion)
- New package check: execute
- Added download extension (allows downloading installers)
- Added downgrade package functionality
- Added status output on STDOUT which can be used by the GUI

FIX: WPKG crashed when /force was used in conjunction with /synchronize. Fixed.

MOD: WPKG was forced to exit if package checks failed after installation or if
     a package failed to remove. This has been changed. Now WPKG prints an
     error (unless /quitonerror is used).
     Note that installation of packages depending on the failed one will fail
     as well. Some packages require reboot unless checks yield true. Therefore
     it is crucial to define correct package reboot flags for such packages.

NEW: Package uninstall checks have been extended. The following values are now
     valid:
     type="uninstall" path="prg" condition="versionsmallerthan" value="1.1"
             Check if version is smaller than the specified value

     type="uninstall" path="prg" condition="versionlessorequal" value="1.1"
             Check if version is less or equal than the specified value

     type="uninstall" path="prg" condition="versionequalto" value="1.1"
             Check if version is exactly equal to the specified value

     type="uninstall" path="prg" condition="versiongreaterorequal" value="1.1"
             Check if version is greater or equal to the specified value

     type="uninstall" path="prg" condition="versiongreaterthan" value="1.1"
             Check if version is greater than the specified value

     The version is compared to the DisplayVersion value within the uninstall
     entry within the Windows registry.
     Changes are based on a patch by Richard de Vos. Thanks!

NEW: Added new check type: "execute". This allows you to execute any script
     which checks if an application is installed - based on the exit code of
     the script.
     Usage:
     type="execute" path="\\path\to\script.cmd"
         condition="exitcodesmallerthan" value="0"
             Evaluates true if the exit code is negative

     type="execute" path="\\path\to\script.cmd"
         condition="exitcodelessorequal" value="0"
             Evalueates true if exit code is 0 or negative

     type="execute" path="\\path\to\script.cmd"
         condition="exitcodeequalto" value="0"
             Evaluates true only if exit code is exactly 0

     type="execute" path="\\path\to\script.cmd"
         condition="exitcodegreaterorequal" value="0"
             Evaluates true if exit code is 0 or any poitive number

     type="execute" path="\\path\to\script.cmd"
         condition="exitcodegreaterthan" value="0"
             Evaluates true if exit code is any positive number

     This type of check also allows very complex checks. For example there is a
     limitation of the RegRead method used by WPKG to query registry values
     which contain backslashes '\'. Now you can execute a batch script which
     checks for such registry values using 'reg query ...'.

NEW: Added download extension as initially proposed by Tomasz Chmielewski (with
     some changes). A download definition is specified as follows:
     <download url="http://server.domain.tld/path/to/file.msi"
     target="subdir/file.msi" timeout="7200" />

     The 'timeout' attribute is entirely optional. It defaults to the value of
     'downloadTimeout' as specified within config.xml (7200 if not omitted).
     The value is specified in seconds.

     The 'target' attribute specifies a path relative to the 'downloadDir' as
     specified within config.xml (defaults to '%TEMP%' if omitted).
     NOTE: You need to specify the full file path, including the file name, not
     just a directory name!

     So to install the package above could be installed by the following
     install command definition:
     <install cmd="msiexec /qn /i %TEMP%\subdir\file.msi">

NEW: Added downgrade command nodes. These commands are executed if the version
     installed on the client is newer thant the one on the server side.
     Example:
     <downgrade cmd="&quot;\\Store1\Mozilla\Firefox Setup 2.0.0.12.exe&quot; /S"/>

NEW: Added /sendStatus flag and 'sendStatus' configuration parameter in
     config.xml. The parameter allows to enable printing of status information
     to STDOUT in order to be parsed by the calling program (e.g. WPKG client).
     This allows the calling program to display some status messages about the
     synchronization process.
     The status update might not be very linear depending on the package sizes
     but at least it allows to display the start time (and therefore also
     elapsed time to the user. So the user can see at least how many percent of
     packages have been synchronized already and for how long the current task
     is running currently.
     Users usually feel much less annoyed when waiting for a task to be
     finished if there are at least some screen updates and a kind of progress
     bar which is updating from time to time.
     Note: STDOUT was chosen due to the fact that I was unable to find a way to
     write to named pipes from JScript yet. However the implementation could
     easily be adapted to pipes or sockets.
     I also updated wrapper.js to read STDOUT of the called wpkg.js and print
     it to its own STDOUT. This required if WPKG client is going to read the
     output of wpkg.js, in that case output needs to be "chained" to be
     forwarded to the GUI.


Change notes
============

WPKG Version: 1.1-M1
Author:     : Rainer Meier <skybeam (at) users.sourceforge.net>
Date        : 2008-01-14

Changes/fixes visible to the user:

Summary:
- Added dependency awareness for package removal

NEW: removePackage now removes all packages which depends on the one to be
     removed as well (recursively). This assures that after poackage uninstall
     no packages are left installed which miss their required dependency.
     Please note that if a package which depends on the one to be removed
     specifies an immediate reboot the reboot takes place right after the
     this package has been removed. In such case the package initially
     requested to be removed will still be there after the reboot.
     To avoid this it is possible that depending packages use the postponed
     reboot functionality. Alternatively you can use the /noreboot switch
     to advice WPKG to ignore each reboot request. Note that in such cases
     some packages will not properly finish their uninstall procedure.
     In case removing of any package from the dependency tree fails WPKG
     will stop uninstalling and print a message. In such case the package
     you requested to remove will still be there because there is at least one
     more package which depends on it. You can advice WPKG to remove the
     requested package in any case by using the /force switch. Warning: In such
     case it might happen that some packages depending on the removed one could
     not be removed and therefore will be left on the system (probably not
     working any more).
