A DOSINST egy DOS-program (C++, Open Watcom, 8086-os kód), amely egy FTP-szerverről telepít, frissít és töröl programokat. A szerveren minden mappa egy program egy
INFO.INI-vel; a DOSINST kilistázza őket a szerveren lévő és a telepített verzióval, és a kiválasztott mappát átmásolja a helyi lemezre. A mi programtárunk aftp://ftp.teletypegames.org; a GMENU minden kiadáskor felkerül ide.Ugyanabból a forrásból készül a
DOSINSTW.EXEis Windows 95-re és újabbakra (Winsock, konzolablakban), ugyanazzal a képernyővel és parancsokkal — Windowsos gépekre, ahol egy DOS-program nem éri el a hálózatot.
ftp://ftp.teletypegames.org/APPS (anonim, csak olvasható, az FTP-szerveren)
new (új), installed (telepítve), UPDATE (eltér a verzió) vagy local only (telepítve van, de a szerveren már nincs).C:\APPS\MAPPA alá, az INFO.INI-t utoljára. A sérült vagy megszakadt letöltés a telepített programot változatlanul hagyja.INSTALL.LST sorolja fel, mit telepített a DOSINST). A csak helyben létező fájlok — mentések, beállítások, a GMENU kedvencei — megmaradnak.DOSINST, Windowsra DOSINSTW). A frissítése a saját programfájlja mappájába kerül, a DOSINST.CFG megmarad.C:\APPS\MAPPA mappát.DOSINST menü
DOSINST LIST programok listája
DOSINST INSTALL GMENU program telepítése vagy frissítése
DOSINST REMOVE GMENU telepített program törlése
/
GMENU/
INFO.INI
FILES.LST <- minden fájl CRC32-je és mérete
GMENUPRG.COM
...
HELLO/
INFO.INI
HELLO.BAT
DATA/README.TXT <- az almappák is átmásolódnak
[program]
name=Hello World
description=A leírás, egy sorban.
version=1.0
platform=DOS
INFO.INI nélküli mappákat kihagyja.platform nem kötelező: DOS vagy WIN32. A DOS-os változat nem listázza a WIN32-es programokat; a DOSINSTW mindkettőt, mert a Windows a DOS-programokat is futtatja. A DOSINST saját mappái a programtárban a DOSINST (DOS) és a DOSINSTW (Win32): mindkét változat a sajátjából frissül, és a másikat nem mutatja.INFO.INI-ből olvassa, így a DOS-gépen nincs külön nyilvántartás.FILES.LST (soronként crc32 méret útvonal) nem kötelező; a server/mkfiles.sh MAPPA írja meg. Nélküle a DOSINST csak a méretet ellenőrzi, amit a szervertől kérdez le.Közzététel: a WarpEngine 1.7 óta a programtár a teletypegames.org WarpEngine-jének DOS-polca (layout: "folders"), és az engine minden publikáláskor a katalógusból építi újra. A DOSINST, a GMENU, a BMAGIC és a TTGWIKI Woodpecker-pipeline-ja egy vX.Y.Z tagnél csak a katalógusba publikálja a kiadást, ezt a taget pedig a pipeline maga teszi fel, amikor a metadata.json version-je megemelkedik (WarpEngine 1.9); az engine a kiadási zipből kicsomagolja a mappákat a settings fájljaik nélkül, és megírja az INFO.INI-t és a FILES.LST-t. Egy a katalógusban elrejtett vagy törölt program kikerül a programtárból. Csak azokat a mappákat törli valaha, amelyeket a polc INDEX.TXT-je felsorolt, így egy mappa kézzel is közzétehető (például egy tesztprogram): a szerveren a /srv/stacks/teletype-games/data/softwares/shelves/APPS/ alá kell másolni, és lefuttatni rá a server/mkfiles.sh-t; újraindítás nem kell.
A DOSINST-hez packet driver és mTCP kell (a DHCP.EXE-je tölti ki a hálózati beállításokat). A beállítások a DOSINST.EXE melletti DOSINST.CFG-ben vannak:
SERVER=ftp.teletypegames.org
PORT=21
PATH=/APPS
DEST=C:\APPS
DOSBox Staging — NE2000-emuláció és a Crynwr NE2000.COM packet driver (az mTCP és a driver a C:\MTCP-ben):
[ethernet]
ne2000 = on
[autoexec]
C:\MTCP\NE2000.COM 0x60 3 0x300 > NUL
SET MTCPCFG=C:\MTCP\MTCP.CFG
C:\MTCP\DHCP.EXE
PATH Z:\;C:\WINDOWS;C:\APPS\GMENU;C:\DOSINST
A DOSBoxban minden PATH sor felülírja az előzőt, ezért minden mappa egyetlen sorba kerül, a Z:\-vel kezdve (itt vannak a DOSBox saját parancsai, pl. a MOUNT). Csendes induláshoz a [dosbox] részben startup_verbosity = quiet, az [autoexec] elejére @echo off, a programok kimenete pedig menjen NUL-ba (C:\MTCP\DHCP.EXE > NUL).
Valódi gépen a NE2000.COM helyett a gép saját hálókártyájának packet drivere kell. A DOSINST.EXE Windows 95/98 DOS-ablakában nem működik, mert ott a hálókártyát a Windows foglalja: ott a DOSINSTW.EXE kell, amihez a Windows saját TCP/IP-jén kívül semmi nem kell. A Windows nem engedi felülírni a futó programot, ezért a DOSINSTW saját frissítése a kilépése után fejeződik be.
A programtár a Teletype Games FTP-szerverének (infra/ftp-server) APPS mappája: anonim és csak olvasható, csak passzív mód, portok: 21 és 30000–30019. A DOSINST a szerver saját címére kapcsolódik az adatporthoz, így NAT mögül is működik. A gyökérben az APPS, a C64, a PLUS4, a WARP és a WIKI van: a 0.6.0 előtti DOSINST DOSINST.CFG-jében PATH=/ áll (a frissítés ezt nem írja át), így ott nem talál programot, ezért kézzel kell PATH=/APPS-ra átírni.
A fordításhoz Open Watcom v2 kell (a snapshot kiadásban macOS- és Linux-binárisok is vannak):
SOURCE/build.sh
A forrás rétegekből áll, mindegyik csak az alatta lévőket használja, azokat is csak interfészen át (a szabályok a DOSLIB oldalán): model (programok, FILES.LST, INSTALL.LST, beállítások), repository (a programtár FTP-n, a telepített programok, a telepítés átmeneti mappája), service (programlista, telepítés, törlés), controller és view (menü és parancssor), app (összerakja őket); a DOS-os és a windowsos build csak a main_dos.cpp / main_win32.cpp-ben és a platform/ alatt tér el. A SOURCE/lib a DOSLIB.
A unit-tesztek DOSBox nélkül, a fejlesztőgépen futnak, hamis programtáron és memóriabeli lemezen (rossz ellenőrzőösszeg, elavult fájlokat törlő frissítés, önfrissítés, a menü szkriptelt billentyűkkel); előtte a rétegeket is ellenőrzik:
SOURCE/test/unit/run.sh
A SOURCE/test/run.sh elindítja az FTP-szervert a gépen, és a DOSINST-et fej nélküli DOSBox Staging-ben futtatja: parancssorból és a menüből is listáz, telepít, frissít és töröl, és bájtra összeveti a lemásolt fájlokat. A menüt egy tesztbuild vezérli, amely a billentyűket a TESTKEYS-ből olvassa és elmenti a képernyőt.
A DOSINST Michael B. Brutman mTCP TCP/IP könyvtárát használja, ami GPLv3, így a DOSINST is GPLv3.