TITLE=DOSINST ROUTE=/dos/dosinst LOCALE=hu MODIFIED=1792417593 URL=https://wiki.teletypegames.org/hu/dos/dosinst L=1 #18 L=2 https://git.teletypegames.org/dos/dosinst L=3 #50 L=4 https://git.teletypegames.org/dos/dosinst/releases/download/v0.6.0/DOSINST-v0.6.0.zip L=5 https://git.teletypegames.org/dos/dosinst/releases/download/v0.6.0/DOSINSTW-v0.6.0.zip L=6 https://git.teletypegames.org/dos/dosinst/releases/download/v0.6.0/DOSINST.EXE L=7 https://git.teletypegames.org/dos/dosinst/releases/download/v0.6.0/DOSINSTW.EXE L=8 https://git.teletypegames.org/dos/dosinst/releases L=9 https://github.com/open-watcom/open-watcom-v2 L=10 #17 L=11 http://www.brutman.com/mTCP/ q│ A DOSINST egy DOS-program (C++, Open Watcom, 8086-os kód), amely egy q│ FTP-szerverről telepít, frissít és töröl programokat. A szerveren minden q│ mappa egy program egy cINFO.INIq-vel; a DOSINST kilistázza őket a szerveren q│ lévő és a telepített verzióval, és a kiválasztott mappát átmásolja a helyi q│ lemezre. A mi programtárunk a cftp://ftp.teletypegames.orgq; a 1GMENU minden q│ kiadáskor felkerül ide. q│ q│ Ugyanabból a forrásból készül a cDOSINSTW.EXEq is Windows 95-re és újabbakra q│ (Winsock, konzolablakban), ugyanazzal a képernyővel és parancsokkal — q│ Windowsos gépekre, ahol egy DOS-program nem éri el a hálózatot. • bRepó:0 2git.teletypegames.org/dos/dosinst • bProgramtár:0 cftp://ftp.teletypegames.org/APPS0 (anonim, csak olvasható, az 3FTP-szerveren) • bLetöltés, v0.6.0:0 DOS: 4DOSINST-v0.6.0.zip · Windows 95 és újabb: 5DOSINSTW-v0.6.0.zip · csak a programfájl: 6DOSINST.EXE, 7DOSINSTW.EXE • bKiadások:0 8git.teletypegames.org/dos/dosinst/releases — telepítés után a DOSINST a programtárból frissíti magát i[Kép: A DOSINST programlistája] r────────────────────────────────────────────────────────────────────────────── 1Mit tud 1═══════ • bListázza0 a szerver programmappáit névvel, verzióval, a telepített verzióval és állapottal: cnew0 (új), cinstalled0 (telepítve), cUPDATE0 (eltér a verzió) vagy clocal only0 (telepítve van, de a szerveren már nincs). • bTelepít0 (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 cC:\APPS\MAPPA0 alá, az cINFO.INI0-t utoljára. A sérült vagy megszakadt letöltés a telepített programot változatlanul hagyja. • bFrissít0 (még egy Enter): lecseréli a fájlokat, és törli azokat, amelyek az új verzióban már nincsenek (az cINSTALL.LST0 sorolja fel, mit telepített a DOSINST). A csak helyben létező fájlok — mentések, beállítások, a GMENU kedvencei — megmaradnak. • bSaját magát is frissíti0: a DOSINST is a programtárban van (DOS-ra cDOSINST0, Windowsra cDOSINSTW0). A frissítése a saját programfájlja mappájába kerül, a cDOSINST.CFG0 megmarad. • bTöröl0 (Del, előbb rákérdez): törli a cC:\APPS\MAPPA0 mappát. • Parancssorból is megy, batch-fájlokhoz: p DOSINST menü p DOSINST LIST programok listája p DOSINST INSTALL GMENU program telepítése vagy frissítése p DOSINST REMOVE GMENU telepített program törlése 1A programtár 1════════════ p / p GMENU/ p INFO.INI p FILES.LST <- minden fájl CRC32-je és mérete p GMENUPRG.COM p ... p HELLO/ p INFO.INI p HELLO.BAT p DATA/README.TXT <- az almappák is átmásolódnak p [program] p name=Hello World p description=A leírás, egy sorban. p version=1.0 p platform=DOS • Az cINFO.INI0 nélküli mappákat kihagyja. • A cplatform0 nem kötelező: cDOS0 vagy cWIN320. A DOS-os változat nem listázza a cWIN320-es programokat; a DOSINSTW mindkettőt, mert a Windows a DOS-programokat is futtatja. A DOSINST saját mappái a programtárban a cDOSINST0 (DOS) és a cDOSINSTW0 (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 cINFO.INI0-ből olvassa, így a DOS-gépen nincs külön nyilvántartás. • A cFILES.LST0 (soronként ccrc32 méret útvonal0) nem kötelező; a cserver/mkfiles.sh MAPPA0 írja meg. Nélküle a DOSINST csak a méretet ellenőrzi, amit a szervertől kérdez le. bKözzététel:0 a program mappáját a szerveren a c/srv/stacks/ftp-server/root/APPS/ alá kell másolni, és lefuttatni rá a cserver/mkfiles.sh0-t; újraindítás nem kell. A DOSINST, a GMENU, a BMAGIC és a TTGWIKI Woodpecker-pipeline-ja ezt minden cvX.Y.Z0 tagnél megcsinálja (a cstore0 lépés): tarként, SSH-n küldi a mappákat a szerver cdeploy0 felhasználójának, akinek a kulcsa egyetlen rögzített parancshoz, a cci-deploy0-hoz kötött (cinfra/host-config0); ez jogosultság nélkül csomagolja ki a feltöltést, csak a program saját mappáit fogadja el, csak közönséges fájlokkal, és ezeket cseréli be az cAPPS0 alá. Trusted volume-ok nem kellenek. 1Beállítás 1═════════ A DOSINST-hez packet driver és mTCP kell (a cDHCP.EXE0-je tölti ki a hálózati beállításokat). A beállítások a cDOSINST.EXE0 melletti cDOSINST.CFG0-ben vannak: p SERVER=ftp.teletypegames.org p PORT=21 p PATH=/APPS p DEST=C:\APPS bDOSBox Staging0 — NE2000-emuláció és a Crynwr cNE2000.COM0 packet driver (az mTCP és a driver a cC:\MTCP0-ben): p [ethernet] p ne2000 = on p p [autoexec] p C:\MTCP\NE2000.COM 0x60 3 0x300 > NUL p SET MTCPCFG=C:\MTCP\MTCP.CFG p C:\MTCP\DHCP.EXE p PATH Z:\;C:\WINDOWS;C:\APPS\GMENU;C:\DOSINST A DOSBoxban minden cPATH0 sor felülírja az előzőt, ezért minden mappa egyetlen sorba kerül, a cZ:\0-vel kezdve (itt vannak a DOSBox saját parancsai, pl. a cMOUNT0). Csendes induláshoz a c[dosbox]0 részben cstartup_verbosity = quiet0, az c[autoexec]0 elejére c@echo off0, a programok kimenete pedig menjen cNUL0-ba (cC:\MTCP\DHCP.EXE > NUL0). bValódi gépen0 a cNE2000.COM0 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 cDOSINSTW.EXE0 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. 1A szerver 1═════════ A programtár a Teletype Games 3FTP-szerverének (cinfra/ftp-server0) cAPPS0 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 csak az cAPPS0 és a cWIKI0 van: a 0.6.0 előtti DOSINST cDOSINST.CFG0-jében cPATH=/0 áll (a frissítés ezt nem írja át), így ott nem talál programot, ezért kézzel kell cPATH=/APPS0-ra átírni. 1Fordítás és tesztek 1═══════════════════ A fordításhoz 9Open Watcom v2 kell (a snapshot kiadásban macOS- és Linux-binárisok is vannak): p 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 10DOSLIB oldalán): cmodel0 (programok, FILES.LST, INSTALL.LST, beállítások), crepository0 (a programtár FTP-n, a telepített programok, a telepítés átmeneti mappája), cservice0 (programlista, telepítés, törlés), ccontroller0 és cview0 (menü és parancssor), capp0 (összerakja őket); a DOS-os és a windowsos build csak a cmain_dos.cpp0 / cmain_win32.cpp0-ben és a cplatform/0 alatt tér el. A cSOURCE/lib0 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: p SOURCE/test/unit/run.sh A cSOURCE/test/run.sh0 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 cTESTKEYS0-ből olvassa és elmenti a képernyőt. 1Licenc 1══════ A DOSINST Michael B. Brutman 11mTCP TCP/IP könyvtárát használja, ami GPLv3, így a DOSINST is GPLv3.