WarpIN is very popular installer for warp-like OS-ses.
Many software developers distribute their products in WarpIN format. But many developers do not use all the features of the installer, as well as being make a errors in the descriptions of the packages. As an example I will give diff of wis script of the lSwitcher(v2.8.1) archive: See diff
Hardcoded paths(to \ECS\... of course), errors in "<PCK>"'s, don't use "<GROUP>" for localisations and what annoying me biggest ... XWorkplace X(e)Center plugin does not distribute as separate package. They offer to put it the hands , as in the good old days, when the software was distributed in ZIP format.
No, it is not our method! So, on court of the community proposed a project "WarpIN-Scripts-and-tools".
In this, active development package:
In plans:
- WPI distribution of QS LDR(with backup feature of original IBM OS2LDR), and script for repack developer's zip distrib.
- WPI distribution of OS/4 "Phoenix" kernels(with the function of automatic addition of the installed kernel to the boot menu and the ability to simultaneously install different versions of the kernels, and script for repack developer's zip of course).
- Continue adding to the database corrected WIS scripts of popular products. If you have such products, you can send me their scripts by e-mail (oxyd76 (at) gmail (dot) com) (and a direct link to download wpi of course!) with Subject: WarpIN Or join me on the GitHub! WarpIN it's easy! ;-)
Disqus?
Hm ...,
1) I see no easy way for an installer framework to prevent the packager to make errors by introducing hard coded paths. It's up to the packager to use macros and the like to allow for variations. That said it is always never a good idea to mark an installation path as FIXED. Simply because that leaves the user no choice to correct the path if desired. I have only used FIXED if things where best placed in \OS2\DLL as that is guaranteed to exist in every OS/2, ECS, AN installation, Same holds true for mandatory paths like \OS2\BOOT for basedev device drivers, \OS2\SYSTEM\TRACE for trace files etc.
2) as to the REXX support in WarpIn, I am undecided. On the one hand you can do in REXX whatever you want, on the other hand, sometimes you'd wish that WarpIn supports some features in a "native" way.
For example, checking if a file exists in some dir:
<REXX NAME="PrepareInstallation">
rc = rxFuncAdd('SysLoadFuncs','REXXUTIL','SysLoadFuncs')
rc = SysLoadFuncs()
fullName = SysSearchPath('ETC','usb.ids')
if ('' == fullName) then
do
fullName = SysSearchPath('DPATH','usb.ids')
end
if ('' == fullName) then
do
fullName = SysSearchPath('PATH','usb.ids')
end
if ('' == fullName) then
do
call WirexxShowMessage 'Error','File "usb.ids" neither found on ETC, nor DPATH nor PATH. Installation cannot continue.',0
call WirexxCancel
end
BootDrive = SysBootDrive();
rc = SysFileTree(BootDrive'\ecs\dll\usbcalls.dll','stem.','FSO')
if (0 == stem.0) then
do
rc = SysFileTree(BootDrive'\os2\dll\usbcalls.dll','stem.','FSO')
end
if (0 == stem.0) then
do
call WirexxShowMessage 'Error','File "usbcalls.dll" neither found in \ecs\dll nor in \os2\dll. Installation cannot continue.',0
call WirexxCancel
end
return 'This will install the WPS class replacement.'
</REXX>
.... and later in the script ....
<BODY>
<PAGE INDEX=1 TYPE="README">
<TEXT>=("PrepareInstallation")</TEXT>
...
</PAGE>
</BODY>
3) Be aware that there are subtle bugs in WarpIn when it comes to modification of CONFIG.SYS and restoration of the original CONFIG.SYS entries on package deinstallation. More often than not you do NOT get the result that you would want to see. That's because WarpIn does NOT preserve (in DATABAS.INI) the CONFIG.SYS entries before modification by the script. It only preserves the change syntax that is uses when it modifiies CONFIG.SYS. Unfortunately the change syntax is not "symmetric", that is, the original content cannot always be restored by applying the "reverse" of the modification done.
Example:
<PCK INDEX=1
PACKAGEID="Lars Erdmann\SYSENTER-SYSEXIT Ring-0 direct call mechanism\DriverBinary\1\0\0"
TITLE="Driver and Sym File"
TARGET="?:\OS2\BOOT" NODESELECT FIXED
CONFIGSYS="BASEDEV=SYSCALL.SYS | REMOVELINE"
CONFIGSYS="BASEDEV=SYSCALL.SYS | ADDAFTER(CHKDSK.SYS)"
>This is the Driver binary and is required
</PCK>
<PCK INDEX=2
PACKAGEID="Lars Erdmann\SYSENTER-SYSEXIT Ring-0 direct call mechanism\DriverTrace\1\0\0"
TITLE="Driver Trace Formatting File"
REQUIRES=1
TARGET="?:\OS2\SYSTEM\TRACE" FIXED
CONFIGSYS="TRACEBUF=2048 /M=W,Q,NODTI /D=ALL | UNIQUE"
CONFIGSYS="TRACE=ON | REMOVEPART"
CONFIGSYS="TRACE=ON 10 | ADDAFTER(TRACEBUF) | UNIQUE"
>This is the driver trace formatting file (needed to format trace data)
</PCK>
is supposed to set up the "TRACE" keyword in config.sys to exclusively set trace code 10 with the TRACE statement. That works but if you deinstall the package you will NOT get the TRACE line as it existed before this modification was done. I have tried all kinds of different other statements to achieve that but I was never successful.
Given this initial config.sys:
REM TRACE=ON 224,225,226
REM TRACE=ON 227
REM TRACE=ON 227,239
REM TRACE=ON 238
REM TRACE=ON 239
REM TRACE=ON 254
TRACE=ON 255
TRACEBUF=1024 /M=W,NQ,NODTI /D=ALL
installing and deinstalling leads to this:
REM TRACE=ON 224,225,226
REM TRACE=ON 227
REM TRACE=ON 227,239
REM TRACE=ON 238
REM TRACE=ON 239
REM TRACE=ON 254
TRACE= 255;ON
TRACEBUF=1024 /M=W,NQ,NODTI /D=ALL
which leads to invalid syntax and is certainly not expected. Things can get worse if you install yet more packages that modify the same CONFIG.SYS statements.
I like WarpIn. The best thing about it is that you can extract the install script from the package and fix it if you need and put it back in :-)