Extensions for WarpIN
From NikiWiki
Contents
Suggested REXX APIs
Abort WPI
Requirement:
- REXX code is able to exit the WPI
Suggested Change:
- implement WirexxExit( rc)
Used Case:
- is required where REXX code detects that a prerequisite for installation is not met.
Deinstall packages
Requirement:
- REXX code is able to uninstall existing packages
Suggested Change:
- 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"
Used Case:
- is required where REXX code needs to take care for cleaning up old versions
Comment:
- 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:
- REXX code is able to query if a given package is installed.
NOTE: this is not for cases where a package is a prerequisite! Suggested Change:
- 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
Used Case:
- 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:
- REXX code is able to query the language of WarpIN and/or the user chosen language
Suggested Change:
- 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:
- REXX code is able to add new package definitions, for cases where the offered packages depend on the hardware being found (like Genmac)
Suggested Change:
- implement WirexxAddPackage( packageinfo), where packageinfo contains the complete XML data for the added package
Current Workaround:
- 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
New attributes for PCK tag
execute program from package as sniffer
Requirement:
- 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
Suggested Change:
- additional attribute PREEXECUTE for PKG tag like (DE)EXECUTE
Used Case:
- installation of device drivers: sniffer for hardware (e.g. check for a PCI device)
- installation of Wireless LAN Monitor: determine active instance of xCenter
Current workaround:
- can be done by REXX, extracting a hidden package to a temp directory. However, the WPI cannot be aborted by REXX code
Problem:
- no idea yet how to define the message(s) being displayed on error, possibly <ERRORMSG rc=n>as counterpart to MSG, where <ERRORMSG> with no rc would be the default error msg.
add a requirement matching an exact package
Requirement:
- force to require an exact version of a dependent external package
Suggested Change:
- invent REQUIRESEXACT to match an exact version
Comment:
- 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:
- existing packages are to be deinstalled before a given package is to be installed
Suggested Change:
- 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:
- a REXX routine is defined to be called on several events
Suggested Change:
- 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
- the hook on HEAD tag is called with parameters
Current Workaround:
- 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)
force a kill of a program without prompt
force unlock of an executable without prompt
Extended attributes for PCK tag
extend (DE)EXECUTE
Requirement:
- 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
Suggested Change:
- extend (DE)EXECUTE (and PREEXECUTE) with
- a progtype flag: PM, VIO, FS
- a visible flag: VISIBLE, INVISIBLE
Comment:
- If DosStartSession is used to launch the session, this would be a logical extension
New atributes for REXX tag
allow execution of REXX scripts packed within the archive
Requirement:
- allow to execute a REXX script that is not embedded in the WIS script
Suggested Change:
- add new attributes EXTRACTFROMPCK and FILENAME to let WarpIN to unpack a REXX file from a (hidden?) package for to execute it
New element for PAGE tag
element to display an INF
Requirement:
- launch the INF file of an application without requiring to install the package
Suggested Change:
- implement element INFBUTTON, requires atribute EXTRACTFROMPCK to use a INF ifle from the package
Comment:
- 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...
New parameters to WARPIN.EXE
deinstall a PACKAGE, supporting wildcards
Requirement:
- allow to deinstall a package with the WarpIN GUI. This allows WPS object to deinstall a given program using the GUI
Suggested Change:
- 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.
New parameters to WIC.EXE
check if a given package is installed
Requirement:
- allow to check via batch if a package is installed
Suggested Change:
- 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
Comment:
- WIC must return an appropriate error code, unlike -q (-q always returns zero!!!)
deinstall a given package
Requirement:
- allow to deinstall a package using the database information, not requiring the WPI file and a XCD file
Suggested Change:
- 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