I was thinking of the user just unzipping the package in the program directory and running the script as even getting users to mark the DLLs high can be a nightmare according to reports.
BTW, LIBPATHSTRICT and BEGINLIBPATH are no longer required for the mozapps as of 45.9.
If the turbo program is run from the mozapp's program directory, entering the path is unneeded.
All of them, including in components(SM) or browser\components(FF) but not in add ons.
turbo.exe -l and turbo.exe -u to load and unload. The -l should be in the startup folder.
Perhaps the network desktop folder would be a good place to install to, with a shadow in the startup folder.
FWIW: I do repackage your FF/SM distributions, with XUL.DLL marked high. Those ZIP files are back-upped, instead of the installed files. One of the extra packages to be installed is the *TURBO.ZIP, in the same directory as the program. No conflicting file names, including the documentation. Other packages are langpacks, noscript 5.1.9, and so on. The only side-effect of loading explicitly recommended DLLs high may be that Object Rexx seems to be running out of (shared) memory sooner.
Then you can delete both matching SET statements, which with a ";" as the final character. I'm still using it, just to be sure and for consistency. Recently I've been looking for non-unique DLL names, and then this is a hit.
eCS installed its (outdated) MOZTURBO.EXE in the Mozilla program directory, which is the easiest solution indeed. The Rexx install script uses this concept too, for example to recognize the Mozilla product, but that can be changed.
Support for more DLLs and/or DLLs in subdirectories tested or added. Please check if the list is complete (dll.X=Y.DLL-lines).
Replace all of my ABOVE512.EXEs by HIGHMEN.EXE, and reverse the order of the arguments.
I've used -t, but you can replace that (PARAMETERS-setting of the SysCreateObject-line).
I'll create objects at the desktop, and (without asking) a shadow in the <WP_START> folder. You can replace <WP_DESKTOP> by the matching network folders object-ID.
I'll apply (most of) the changes above to the Rexx code below.
Patches/restrictions:
Removed SET LIBPATSTRICT=T
Removed SET BEGINLIBPATH=...
Standard *TURBO.EXE parameter is now -l, instead of -t
Location of the WPProgram object is <WP_DESKTOP> instead of <WP_START>
Create second, -u <WP_DESKTOP> WPProgram object (program settings untested)
Create a shadow of the -l object in <WP_START> folder
Only XUL.DLL is supported for all of Dave's builds. Other DLLs, compiled by Dave, only if it's FF or SM (I don't have a TB copy).
To replace ABOVE512.EXE by HIGHMEM.EXE, change the text ABOVE512.EXE to HIGHMEM.EXE twice (comment, variable)
And to replace ABOVE512.EXE by HIGHMEM.EXE, change the text "high dll.i '-c'" to "high '-c' dll.i"
Killed bug: loadhigh=0 was in loop
Unchanged: no "ICONFILE=[full path of icon file];" in WPS setup strings of SysCreateObject().
Requirements: Classic Rexx or Object Rexx interpreter, REXXUTIL.DLL, ABOVE512.EXE (until changed to HIGHMEM.EXE).
Test log:
[R:\MEUK\firefox]unzip d:\database\software\firefox\ff*
Archive: d:/database/software/firefox/ffturbo-v0.5.zip
replace CHANGES? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
inflating: CHANGES
inflating: ffturbo.exe
inflating: LICENSE
inflating: readme
[R:\MEUK\firefox]insturbo.cmd
Product found: FF
FFTURBO.EXE found.
XUL.DLL found.
Do you want to use memory above 512 MiB for XUL.DLL (default, recommended),
which does not require having more than 512 MiB of RAM installed (Y/n)? y
LGPLLIBS.DLL found.
Do you want to use memory above 512 MiB for LGPLLIBS.DLL (default, recommended),
which does not require having more than 512 MiB of RAM installed (Y/n)? n
MOZSQLT3.DLL found.
Do you want to use memory above 512 MiB for MOZSQLT3.DLL (default, recommended),
which does not require having more than 512 MiB of RAM installed (Y/n)? y
browser\components\BRWSRCMP.DLL found.
Do you want to use memory above 512 MiB for browser\components\BRWSRCMP.DLL (def
ault, recommended),
which does not require having more than 512 MiB of RAM installed (Y/n)? n
gmp-clearkey\0.1\CLEARKEY.DLL found.
Do you want to use memory above 512 MiB for gmp-clearkey\0.1\CLEARKEY.DLL (defau
lt, recommended),
which does not require having more than 512 MiB of RAM installed (Y/n)? n
Enter the full path to ABOVE512.EXE, or press nothing but <ENTER> to try to
find it:
ABOVE512.EXE not found in current directory nor PATH. Searching...
Scanning drive C:
Scanning drive D:
Found: D:\Utilities\Above512\ABOVE512.exe
module : XUL.DLL
object 0 : base 0x00010000, size 0x036e3e20, flags 0x00012005
readable, !writeable, executable, !resource, !discardable, !shared,
!preload, !invalid, swappable, !16:16 alias, !conforming,
32bit, !IOPL, himem
object 1 : base 0x03700000, size 0x0009b5f0, flags 0x00002003
readable, writeable, !executable, !resource, !discardable, !shared,
!preload, !invalid, swappable, !16:16 alias, !conforming,
32bit, !IOPL, !himem
object 2 : base 0x00000000, size 0x00002324, flags 0x00002039
readable, !writeable, !executable, resource, discardable, shared,
!preload, !invalid, swappable, !16:16 alias, !conforming,
32bit, !IOPL, !himem
module : MOZSQLT3.DLL
object 0 : base 0x00010000, size 0x000a7110, flags 0x00012005
readable, !writeable, executable, !resource, !discardable, !shared,
!preload, !invalid, swappable, !16:16 alias, !conforming,
32bit, !IOPL, himem
object 1 : base 0x000c0000, size 0x00001bf0, flags 0x00002003
readable, writeable, !executable, !resource, !discardable, !shared,
!preload, !invalid, swappable, !16:16 alias, !conforming,
32bit, !IOPL, !himem
Object created: Firefox Turbo
Object created: Firefox Turbo (unload)
WPS shadow object of Firefox Turbo created in the startup folder.
Press <ENTER>...
/* InsTurbo.CMD */
CALL RxFuncAdd 'SysCreateObject','RexxUtil','SysCreateObject'
CALL RxFuncAdd 'SysDriveInfo','RexxUtil','SysDriveInfo'
CALL RxFuncAdd 'SysDriveMap','RexxUtil','SysDriveMap'
CALL RxFuncAdd 'SysFileTree','RexxUtil','SysFileTree'
CALL RxFuncAdd 'SysSearchPath','RexxUtil','SysSearchPath'
/* Find Mozilla product in the current directory */
SAY
product=''
IF Stream('MOZILLA.EXE','C','QUERY EXISTS')<>'' THEN product='Mozilla'
IF Stream('THUNDERBIRD.EXE','C','QUERY EXISTS')<>'' THEN product='TB'
IF Stream('FIREFOX.EXE','C','QUERY EXISTS')<>'' THEN product='FF'
IF Stream('SEAMONKEY.EXE','C','QUERY EXISTS')<>'' THEN product='SM'
IF product='' THEN DO
SAY 'Error, cannot find any main Mozilla executable in the current directory:'
SAY ' ' Directory()
SAY
CALL CharOut '','Press <ENTER>... '
PULL .
EXIT
END
SAY 'Product found:' product
IF product='Mozilla' THEN product='MOZ'
/* Find the matching TURBO.EXE in the same current directory */
turbo=product||'TURBO.EXE'
IF Stream(turbo,'C','QUERY EXISTS')='' THEN DO
SAY 'Error, cannot find' turbo 'in the current directory:' Directory()
SAY
CALL CharOut '','Press <ENTER>... '
PULL .
EXIT
END
SAY turbo 'found.'
/* If the Mozilla product isn't the legacy browser, then try to find XUL.DLL */
dll.0=1
dll.1='XUL.DLL'
dll.2='LGPLLIBS.DLL'
dll.3='MOZSQLT3.DLL'
IF product='FF' THEN DO
dll.0=5
dll.4='browser\components\BRWSRCMP.DLL'
dll.5='gmp-clearkey\0.1\CLEARKEY.DLL'
END
IF product='SM' THEN DO
dll.0=7
dll.4='LDAP60.DLL'
dll.5='LDIF60.DLL'
dll.6='PRLDAP60.DLL'
dll.7='components\SUITE.DLL'
END
IF Length(product)>2 THEN dll.0=0
loadhigh=0
DO i=1 TO dll.0
IF Stream(dll.i,'C','QUERY EXISTS')='' THEN DO
SAY 'Error, cannot find' dll.i 'in the current directory:' Directory()
SAY
CALL CharOut '','Press <ENTER>... '
PULL .
EXIT
END
SAY dll.i 'found.'
SAY
SAY 'Do you want to use memory above 512 MiB for' dll.i '(default, recommended),'
CALL CharOut '','which does not require having more than 512 MiB of RAM installed (Y/n)? '
PULL answer
answer.i=Strip(answer)
IF answer.i='' THEN answer.i='Y'
IF answer.i='Y' THEN loadhigh=1
END i
/* Try to find ABOVE512.EXE, if the answer was (Y)es */
IF loadhigh=1 THEN DO
file='ABOVE512.EXE'
high=Stream(file,'C','QUERY EXISTS')
IF high='' THEN high=SysSearchPath('PATH',file)
IF high='' THEN DO
SAY
SAY 'Enter the full path to' file||', or press nothing but <ENTER> to try to'
CALL CharOut '','find it: '
PARSE PULL high
IF Strip(high)<>'' THEN DO
IF Right(high,1)<>'\' THEN high=high||'\'
high=high||file
IF Stream(high,'C','QUERY EXISTS')='' THEN DO
SAY
SAY 'Error: cannot find file' high
SAY
CALL CharOut '','Press <ENTER>... '
PULL .
EXIT
END
END
END
IF Strip(high)='' THEN DO
SAY
SAY file 'not found in current directory nor PATH. Searching... '
drives=SysDriveMap('A:')
IF drives='' THEN DO
SAY
SAY 'Error: no drives found.'
SAY
CALL CharOut '','Press <ENTER>... '
PULL .
EXIT
END
drive.0=Words(drives)
DO i=1 TO drive.0
okay.i=0
IF SysDriveInfo(Word(drives,i))<>'' THEN okay.i=1
END i
DO i=1 TO drive.0
IF okay.i=0 THEN ITERATE i
IF high='' THEN DO
SAY 'Scanning drive' Word(drives,i)
pattern=Word(drives,i)||'\'||file
CALL SysFileTree pattern,'hit.','FOS'
IF hit.0>0 THEN DO
high=hit.1
SAY
SAY 'Found:' high
END
END
END i
END
SAY
IF high='' THEN DO
SAY
SAY 'Error:' file 'not found.'
SAY
CALL CharOut '','Press <ENTER>... '
PULL .
EXIT
END
DO i=1 TO dll.0
IF answer.i='Y' THEN '@'||high dll.i '-c'
END i
END
SAY
here=Translate(Directory())
name=''
IF product='FF' THEN name='Firefox'
IF product='MOZ' THEN name='Mozilla'
IF product='SM' THEN name='SeaMonkey'
IF product='TB' THEN name='Thunderbird'
name=Strip(name 'Turbo')
SAY
IF SysCreateObject('WPProgram',name,'<WP_DESKTOP>','EXENAME=CMD.EXE;PARAMETERS=/c detach' here||'\'||turbo '-l;STARTUPDIR='||here||';MINIMIZED=YES;OBJECTID=<TURBO_'||product||'>','R') THEN DO
SAY 'Object created:' name
IF SysCreateObject('WPProgram',name '(unload)','<WP_DESKTOP>','EXENAME='||here||'\'||turbo||';PARAMETERS=-u;STARTUPDIR='||here||';MINIMIZED=YES;OBJECTID=<TURBO_'||product||'_UNLOAD>','R') THEN DO
SAY 'Object created:' name '(unload)'
IF SysCreateShadow('<TURBO_'||product||'>','<WP_START>') THEN DO
SAY'WPS shadow object of' name 'created in the startup folder.'
SAY
CALL CharOut '','Press <ENTER>... '
PULL .
EXIT
END
END
END
SAY 'Error: cannot create all 3 WPS objects.'
SAY
CALL CharOut '','Press <ENTER>... '
PULL .
EXIT
No need for credits. This is nothing compared to your efforts in Death Valley, and it isn't supported. And please cancel that silly beauty contest poll. I'll concede, so David's the winner... ;-)