Okay, following some discussion I've decided to address some concerns regarding automation and manageability for the next update:
1) Banishing those annoying "dosapp" batch files
For ubcd4.11, these are currently to be found in:
Code:
/dosapps/<application name>/startup.bat
For ubcd5b...
Code:
/ubcd/dosapps/<application name>/startup.bat
Not very practical or easy to manage. Instead, I decided to remove all those startup.bat files and replace them with the following file(s):
/main.iniCode:
;Comments
;
[Category 1]
fjdt ;fjdt.exe ;- ;Fujitus Diagnostic Tool 7.00 (Fujitsu)
dfsee ;dfsdos.exe ;- ;DFSee 9.10 (Evaluation Version)
copywipe ;copywipe.exe ;- ;CopyWipe 1.14
;
[Category2]
intelfid ;BFREQIDE.COM ;- ;Intel Processor Frequency ID V7.2.20041115
intelpiu ;BPROCIDE.COM ;- ;Intel Processor Identification Utility V3.8.20080505
chkdskg ;CHKDSKG.EXE ;- ;Avira NTFS4DOS Repair Utility 1.9
dfrgntfs ;DFRGNTFS.EXE ;- ;Avira NTFS4DOS Defragment Utility 1.9
readntfs ;READNTFS.EXE ;- ;Active NTFS Reader 1.03
pwmx423 ;"callver 6.20 POWMX423.EXE" ;- ;PowerMax 4.23 (Maxtor/Quantum)
pwmx409 ;"callver 6.20 POWMX409.EXE" ;- ;PowerMax 4.09 (Maxtor/Quantum)
mhdd45 ;"mhdd.exe /enableprimary" ;- ;MHDD32 4.5
mhdd46 ;"mhdd.exe /enableprimary" ;- ;MHDD32 4.6
;
[Category 3]
dft ;"dft.exe /PSR" ;- ;Drive Fitness Test 4.14 (IBM/Hitachi)
ftool ;ftool.exe ;- ;IDE/ATA Feature Tool 2.10 (IBM/Hitachi)
hddreg ;hddreg.exe ;- ;HDD Regenerator 1.5 (Shareware)
pcconfig ;config.exe ;- ;PC-Config V9.33
...
...and so on
/usr.ini(optional for users wishing to customise their distribution)Code:
;Comments
;
[Custom]
sdisk ;sdisk.exe ;- ;EASEUS DOS Partition Manager
;

Then, using a nested loop function, we can create the batch files dynamically...
Code:
for %%i in (%tmp%\~bin) do if not exist %%i mkdir %%i
set _i=0
set _j=0
call var set _m=lines %tmp%\_ubcd.bak
:_loop_i
::
call var set _i=(%_i%+1)
lmod /l%_i% []<%tmp%\_ubcd.bak | stow _cnt >%tmp%\nul
inifile %home%\cdapp.cfg [%_cnt%] | lmod /l* /s [$2:$!] ; %_cnt% >%tmp%\_ubcd.dat
call var set _n=lines %tmp%\_ubcd.dat
@rem pause
::
:_loop_j
call var set _j=(%_j%+1)
lmod /l%_j% /s; @set _$app=[$4:$!-1][+]@set _$appcmd=[$2][+]@set _$apparc=[$1][+]@set _$appmnu=[$3]<%tmp%\_ubcd.dat >%tmp%\~bin\_ubcd.bat
call %tmp%\~bin\_ubcd.bat
if exist %tmp%\~bin\%_$apparc%.bat goto _skip_j
ren %tmp%\~bin\_ubcd.bat %_$apparc%.bat
:_skip_j
@rem pause
if "%_j%"=="%_n%" goto _end_j
goto _loop_j
:_end_j
::
for %%i in (_j _n) do set %%i=
if "%_i%"=="%_m%" goto _end_i
goto _loop_i
::
:_end_i
for %%i in (_$app _$appcmd _$apparc _$appmnu) do set %%i=
for %%i in (_i _m _cnt) do set %%i=
for %%d in (%tmp%\~bin\*.bat) do echo @runapp.bat >>%%d


...and here's the result:



Hopefully, Victor will approve of this method for the next beta. At the very least, I'll include support for this functionality in the next release.
2) Customising the default dosapp folderWhat I have decided to do is supply 2 locations from which freedos will search for dosapps - main and user. In order to allow users the flexibility to customise and declare their own locations, I've decided to employ the use of a global INI file which users can change to set their own paths.
ubcd.ini(place this anywhere on the CD)Code:
;Comments
;
[Version]
Signature = $Ubcd$
Version = 5.0.b
Url = http://www.ultimatebootcd.com/
[Settings]
;For UBCD 5.0b
ProgramRootDirectory = \ubcd\dosapps\main
ProgramUserDirectory = \ubcd\dosapps\usr
;For UBCD 4.1.1
;ProgramRootDirectory = \dosapps
;ProgramUserDirectory = \dosapps\usr
Simply change these as required and dosubcd.img will search these paths instead (omitting this file entirely will simply set the paths to their default locations).