Extensions for WarpIN

From NikiWiki
Revision as of 22:12, 17 July 2017 by Martini (talk | contribs) (deinstall a given package)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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

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