EN /HU | Belépés

DOSINST

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 a ftp://ftp.teletypegames.org; a GMENU minden kiadáskor felkerül ide.

Ugyanabból a forrásból készül a DOSINSTW.EXE is 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.

A DOSINST programlistája


Mit tud

  • Listázza a szerver programmappáit névvel, verzióval, a telepített verzióval és állapottal: new (új), installed (telepítve), UPDATE (eltér a verzió) vagy local only (telepítve van, de a szerveren már nincs).
  • Telepít (Enter): a mappát almappástul egy ideiglenes mappába tölti le, minden fájlt ellenőriz (CRC32 és méret), és csak ezután mozgatja őket a 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.
  • Frissít (még egy Enter): lecseréli a fájlokat, és törli azokat, amelyek az új verzióban már nincsenek (az 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.
  • Saját magát is frissíti: a DOSINST is a programtárban van (DOS-ra DOSINST, Windowsra DOSINSTW). A frissítése a saját programfájlja mappájába kerül, a DOSINST.CFG megmarad.
  • Töröl (Del, előbb rákérdez): törli a C:\APPS\MAPPA mappát.
  • Parancssorból is megy, batch-fájlokhoz:
TXT
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

A programtár

TXT
/
  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
INI
[program]
name=Hello World
description=A leírás, egy sorban.
version=1.0
platform=DOS
  • Az INFO.INI nélküli mappákat kihagyja.
  • A 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.
  • A fájl- és mappanevek csak DOS-os 8.3-as nevek lehetnek; más névnél a DOSINST hibával megáll.
  • A telepített verziót a lemásolt INFO.INI-ből olvassa, így a DOS-gépen nincs külön nyilvántartás.
  • A 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.

Beállítás

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:

INI
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):

TXT
[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 szerver

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.

Fordítás és tesztek

A fordításhoz Open Watcom v2 kell (a snapshot kiadásban macOS- és Linux-binárisok is vannak):

SH
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:

SH
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.

Licenc

A DOSINST Michael B. Brutman mTCP TCP/IP könyvtárát használja, ami GPLv3, így a DOSINST is GPLv3.