Extensions for WarpIN

Abort WPI
Requirement: Suggested Change: Used Case:
 * REXX code is able to exit the WPI
 * implement WirexxExit( rc)
 * is required where REXX code detects that a prerequisite for installation is not met.

Deinstall packages
Requirement: Suggested Change: Used Case: Comment:
 * REXX code is able to uninstall existing packages
 * implement WirexxDeinstall( packageid)
 * package name and version information within the package ID must be optional, to automatically deinstall all packages belonging to one "vendor\application"
 * is required where REXX code needs to take care for cleaning up old versions
 * may be obsolete once a new PCK attribute takes care for deinstallation of older/any versions of the same application (see below)

query if package is installed
Requirement: NOTE: this is not for cases where a package is a prerequisite! Suggested Change: Used Case:
 * REXX code is able to query if a given package is installed.
 * implement WirexxQuery( packageid, stem, option)
 * the list of package ids found is returned in stem
 * package name and version information within the package ID must be optional, to automatically deinstall all packages belonging to one "vendor\application"
 * if the package contains version information, it must match exactly
 * option may be + or -, to specify that also newer or older versions match
 * is required where REXX code needs to take care for cleaning up old versions, and not all packages should be deinstalled

query WarpIN/locale language
Requirement: Suggested Change:
 * REXX code is able to query the language of WarpIN and/or the user chosen language
 * implement WirexxQueryLanguage( option)
 * option WARPIN will return the language of the WarpIN installation, so that the text being displayed on the installer pages can match this language (Default)
 * option USER will return the user a.k.a the locale language, so that NLS files matching this language can be installed
 * option SYSTEM will return the system language (determined by syslevel.os2), so that NLS files matching this language can be installed. This is important if system components are extended, and user and system language is not identical
 * option XWP will return the language being active for XWorkplace (determined by setting in OS2.INI), so that NLS files matching this language can be installed. This is important if xCenter widgets are installed

add new package definition
Requirement: Suggested Change: Current Workaround:
 * REXX code is able to add new package definitions, for cases where the offered packages depend on the hardware being found (like Genmac)
 * implement WirexxAddPackage( packageinfo), where packageinfo contains the complete XML data for the added package
 * add dummy package entries, related to dummy external filenames, so that they are not visible. When required, these entries are made visible. This is an ugly hack as the resulting WPI cannot be
 * tested with wic -t
 * queried with wic -q

execute program from package as sniffer
Requirement: Suggested Change: Used Case: Current workaround: Problem:
 * run a program, included in the WPI archive, to determine if a prerequisite for installation is met
 * continue installation with no message on zero reason code
 * display a message for specific error code(s) and abort installation
 * additional attribute PREEXECUTE for PKG tag like (DE)EXECUTE
 * installation of device drivers: sniffer for hardware (e.g. check for a PCI device)
 * installation of Wireless LAN Monitor: determine active instance of xCenter
 * can be done by REXX, extracting a hidden package to a temp directory. However, the WPI cannot be aborted by REXX code
 * no idea yet how to define the message(s) being displayed on error, possibly as counterpart to MSG, where  with no rc would be the default error msg.

add a requirement matching an exact package
Requirement: Suggested Change: Comment:
 * force to require an exact version of a dependent external package
 * invent REQUIRESEXACT to match an exact version
 * this is for where the required packages are definitely not upwards compatible, but instead must exactly match the main package

auto-deinstall any older/other version of a PCK
Requirement: Suggested Change:
 * existing packages are to be deinstalled before a given package is to be installed
 * implement DEINSTALL attribute, with option parameter
 * no option specified will deinstall all packages of vendor\Application\package
 * option NEWER will deinstall newer packages of vendor\Application\package
 * option OLDER NEWER will deinstall older packages of vendor\Application\package

install/deinstall REXX hooks
Requirement: Suggested Change: Current Workaround:
 * a REXX routine is defined to be called on several events
 * implement HOOK atttribute for PCK and for HEAD tag, with the name of a REXX routine to be called (possibly with optional parameters)
 * the hook on HEAD tag is called with parameters
 * START on launch of the eWPI
 * INSTALL when the install button is pressed on installation
 * DEINSTALL when the install button is pressed on deinstallation
 * INSTALLED on exit of the WPI
 * ABORTED on abortion of the WPI
 * CANCELLED if the user cancelled the WPI
 * the hook on PCK tag is called with parameter
 * INSTALL when the package is about to be installed
 * DEINSTALL when the package is about to be deinstalled
 * INSTALLED when the installation of the package has been completed
 * DEINSTALLED when the deinstallation of the package has been completed
 * ABORTED when the installation/deinstallation of a package has failed
 * for a hook on start of the WPI, a REXX macro can be called in the TITLE value
 * for all other cases, REXX can't be called (AFAIK)

extend (DE)EXECUTE
Requirement: Suggested Change: Comment:
 * allow to execute a program in PM and FS mode without executing it via a visible OS/2 / eCS window.
 * allow to execute a VIO program invisible
 * extend (DE)EXECUTE (and PREEXECUTE) with
 * a progtype flag: PM, VIO, FS
 * a visible flag: VISIBLE, INVISIBLE
 * If DosStartSession is used to launch the session, this would be a logical extension

element to display an INF
Requirement: Suggested Change: Comment:
 * launch the INF file of an application without requiring to install the package
 * implement element INFBUTTON, requires atribute EXTRACTFROMPCK to use a INF ifle from the package
 * this change would relief from one of the most obvious disadvantages of WarpIN packages. A readme is often not sufficient in order to evaluate if an application is worth to install. However, to view an included INF, an end user would have to install it anyway...

deinstall a PACKAGE, supporting wildcards
Requirement: Suggested Change:
 * allow to deinstall a package with the WarpIN GUI. This allows WPS object to deinstall a given program using the GUI
 * implement parameter to deinstall the packages of one or more given package IDs.
 * The package and version information in the specified ID is to be optional, to deinstall more than one matching package.

check if a given package is installed
Requirement: Suggested Change: Comment:
 * allow to check via batch if a package is installed
 * implement parameter -Q to query for a specified package ID. The version information in the specified ID is optional.
 * wic returns zero if package is installed
 * if version information is specified, the installed version must match exactly
 * if version information is specified
 * with a plus sign appended, the installed version must match exactly or be greater
 * with a minus appended, the installed version must match exactly or be lesser
 * if version information is not specified, any version matches
 * wic returns non-zero, if package is not installed
 * WIC must return an appropriate error code, unlike -q (-q always returns zero!!!)

deinstall a given package
Requirement: Suggested Change:
 * allow to deinstall a package using the database information, not requiring the WPI file and a XCD file
 * Implement parameter -D to deinstall the package wit a given package ID.
 * The package and version information in the specified ID is to be optional, to deinstall more than one matching package.
 * wic returns zero if package is deinstalled properly, or not installed