---
title: DOSINST
url: 'https://wiki.teletypegames.org/hu/dos/dosinst'
markdown: 'https://wiki.teletypegames.org/hu/dos/dosinst.md'
lang: hu
date: '2026-10-11'
description: '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…'
taxonomy:
  tag:
    - howto
---

# 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](https://wiki.teletypegames.org/hu/dos/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.

- **Repó:** [git.teletypegames.org/dos/dosinst](https://git.teletypegames.org/dos/dosinst)
- **Programtár:** `ftp://ftp.teletypegames.org/APPS` (anonim, csak olvasható, az [FTP-szerveren](https://wiki.teletypegames.org/hu/infrastructure/ftp-server))
- **Letöltés, v0.6.0:** DOS: [DOSINST-v0.6.0.zip](https://git.teletypegames.org/dos/dosinst/releases/download/v0.6.0/DOSINST-v0.6.0.zip) · Windows 95 és újabb: [DOSINSTW-v0.6.0.zip](https://git.teletypegames.org/dos/dosinst/releases/download/v0.6.0/DOSINSTW-v0.6.0.zip) · csak a programfájl: [DOSINST.EXE](https://git.teletypegames.org/dos/dosinst/releases/download/v0.6.0/DOSINST.EXE), [DOSINSTW.EXE](https://git.teletypegames.org/dos/dosinst/releases/download/v0.6.0/DOSINSTW.EXE)
- **Kiadások:** [git.teletypegames.org/dos/dosinst/releases](https://git.teletypegames.org/dos/dosinst/releases) — telepítés után a DOSINST a programtárból frissíti magát

![A DOSINST programlistája](https://wiki.teletypegames.org/wiki-assets/dosinst/dosinst-list.png)

---

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

```
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

```
/
  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](https://wiki.teletypegames.org/hu/engines/warp-engine)-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):

```
[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](https://wiki.teletypegames.org/hu/infrastructure/ftp-server) (`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](https://github.com/open-watcom/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](https://wiki.teletypegames.org/hu/dos/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](http://www.brutman.com/mTCP/) TCP/IP könyvtárát használja, ami GPLv3, így a DOSINST is GPLv3.

'; var prevLevel = 2; for (var i = 0; i < headings.length; i++) { var h = headings\[i\]; var text = h.textContent.trim(); var slug = text.toLowerCase() .replace(/\[áàâä\]/g,'a').replace(/\[éèêë\]/g,'e').replace(/\[íìîï\]/g,'i') .replace(/\[óòôöő\]/g,'o').replace(/\[úùûüű\]/g,'u') .replace(/\[^a-z0-9\]+/g, '-').replace(/^-|-$/g, ''); if (!slug) slug = 'heading-' + i; if (used\[slug\]) { slug += '-' + i; } used\[slug\] = true; h.id = slug; var level = parseInt(h.tagName.charAt(1)); var cls = level > 2 ? ' class="toc-child"' : ''; html += '- [' + text + '](#'%20+%20slug%20+%20')
'; } html += '
'; toc.innerHTML = html; // Scroll-spy: highlight current heading var links = toc.querySelectorAll('a'); var ids = \[\]; for (var j = 0; j < links.length; j++) ids.push(links\[j\].getAttribute('href').slice(1)); function updateActive() { var current = ''; for (var k = 0; k < ids.length; k++) { var el = document.getElementById(ids\[k\]); if (el && el.getBoundingClientRect().top <= 80) current = ids\[k\]; } for (var m = 0; m < links.length; m++) { links\[m\].parentNode.classList.toggle('active', links\[m\].getAttribute('href') === '#' + current); } } window.addEventListener('scroll', updateActive, { passive: true }); updateActive(); })();

---

## Navigation

- Parent: [DOS](https://wiki.teletypegames.org/hu/dos.md)
- Previous: [BMAGIC](https://wiki.teletypegames.org/hu/dos/bmagic.md)
- Next: [DOSLIB](https://wiki.teletypegames.org/hu/dos/doslib.md)
