Dokumentace k mému instalačnímu programu. I. Idea Pod pojmem univerzální program si představuji program, který ve své podstatě není omezen jakýmkoliv návrhem programátora. Jinými slovy, není omezen nějakým úvodním schématem, které bylo navrženo. To nás přivádí k myšlence, že jediná správná možnost jak minimalizovat toto omezení je zvýšení vyjadřovací síly skriptu, kterým se řídí program. Dovedeme-li tuto myšlenku do konce, dojdeme k názoru, že samotný skript musí být víceméně také program psaný ve specifickém programovacím jazyku (ovšem velmi zje- dnodušeném, aby se neztratila výhoda napsání skriptu oproti napsání celého programu) a že náš univerzální program bude v podstatě plnit funkci jak překladače,tak i samotného programu. II. Konkrétní požadavky Co všechno tedy musí náš skript umět, aby pomocí něj bylo možné sestavit průběh libovolné instalace?(má ovšem mnohem širší možnosti uplatnění) -Musí umět manipulovat s parametry okna na kterém beží aplikace. -Musí umět vytvořit objekty jako jsou tlačítka a pod. -Musí umět kopírovat soubory dle zadaných parametrů, případně provádět jejich dekomprimaci. -Musí umět používat proměnné se krerými umožní základní operace jako je sčítaní čísel, nebo zřetězení textových řetězců a musí umožnit jejich používání kdekoliv mohou zastoupit nějakou hodnotu. -Grafika musí být zcela libovolně nastavitelná -Musí umět získat hodnoty proměnných z editačních polí a pod. -Musí umět reagovat na stlačení tlačítek a pod. -Musí umět používat rozhodovací událost typu : POKUD, seznam podmínek,POTOM udělej,seznam úkolů, JINAK,seznam úkolů -Musí umět upozornit programátora skriptu na kterém řádku má chybu -Musí umět spouštět externí programy III.Nástin algoritmických řešení Každý jednotlivý příkaz ve skriptu spustí nějakou proceduru, nebo funkci v hlavním programu(např. příkaz pro zkopírovaní souboru spustí proceduru,která daný soubor zkopíruje,případně dekomprimuje). Proměnné jsou uloženy v dynamických strukturách (viz dynamika.bmp).Stejně tak objekty. Proto nejsou omezeny svým počtem, jak by tomu mohlo být při statickém použití. Pro pohyb mezi jednotlivými částmi programu lze využívat příkazy skoku. Dají se tak vytvářet například cykly. U pomíněných příkazů se skok používá pro skok do části, pro splněnou podmínku, nebo pro skok do části,která bude reagovat na nesplnění podmínky. IV. Poznámky k samotnému psaní skriptu -Text za "~" se bere jako komentář a tedy je ignorován stejně jako prazdné řádky. -Proměnnou lze používat místo textových řetezců,nebo číselných hodnot použitím značky ^ před jménem proměnné. Např ^pocet udává hodnotu proměnné jména pocet -značky skoku jsou ignorovány dokud nepřijde příkaz k samotnému skoku V. Samotné příkazy,jejich popis a příklady použití ================================================================================== =název= popis tohoto příkazu = příklady použití = ================================================================================== =p 1 =Změní nastavení velikosti instalačního okna. =p 1 "640,480 = = =možnosti: fullscreen:jedna z hodnot je rovna nule=p 1 "640,0" = = =jiné rozměry zadávat formou: "640,480" = = ================================================================================== =p 2 =Nastaví umístění okna - při nastavení fullscreen =p 2 "10,20" = = =nemá význam, jinak se zadávají souřadnice x,y =p 2 "100,100" = ================================================================================== =p 3 =Nastavení obrázku,který má být na pozadí. =p 3 "obrazek1.bmp,0,0" = = =Je nutné zadat kompletní cestu, pokud není obrá- = = = =zek v aktuálním adresáři.Uvažují se soubory *.bmp=p 3 "picture.jpg,10,0" = = =nebo *.jpg(tato verze zatím neobsahuje tuto volbu= = = =Další číslice určují pozici obrázku na formuláři =p 3 "pozadi.bmp,50,50" = ================================================================================== =p 4 =Přidá proměnnou, nebo změní její hodnotu, pokud =p 4 "str,jmnprom1,Ahoj" = = =proměnná tohoto jména a typu existuje. = = = =Prvním atributem je typ. Má dvě hodnoty int pro =p 4 "int,jmnprom1,100" = = =celočíselnou proměnnou,nebo str pro proměnnou =(dvě jiné proměnné-liší = = =typu textový řetězec. Dalším atributem je jméno = se ve svém typu = = =proměnné a dalším je její hodnota. = = = =(šlo by přidat i proměnné jiných typů,ale zatím =p 4 "int,jmnprom1,10" = = = mi to nepřipadalo k něčemu užitečné =(změna hod. z 100 na 10)= ================================================================================== =p 5 =Odebere/zruší proměnnou daného typu a jména =p 5 "str,jmnprom1" = ================================================================================== =p 6 =Zkopíruje dané soubory z jedné lokace do druhé =p 6 "e:\prv.cd,c:\dru.x"= = =(bez dekomprese) = = = =format:p 6 "cesta+jméno souboru,který se kopíruje= = = = cesta+jmn souboru-kam má být zkopírováno"= = ================================================================================== =o 1 =Přidá objekt,nebo změní jeho artibuty.Objekty =o 1 "jmn,1,3,3,5,5,1,hm"= = =jsou rozlišeny jménem objektu. =(tlacitko,viditelné) = = =format="jméno objektu,typ,umístění x,umístěníy, =o 1 "jm2,2,9,9,2,2,0,ha"= = =šířka,výška,viditelnost 0-ne 1-ano" =(neviditelný edit = = =typy jsou:1=button,2=edit...(více v plné verzi) = s textem ha) = ================================================================================== =o 2 =Odebere/zruší objekt daného jména =o 2 "jmenobjektu1" = ================================================================================== =j... =j určuje, že se má skočit na místo v programu =j "skok" = =^... =^ a něco za ní je místo, kam se program skočí =^skok = ================================================================================== =s =s znamená,že program dále nenačítá skript, ale že= = = = čeká dokud není stačeno nějaké tlačítko, mezi- =s = = = tím může uživatel vyplnit různé kolonky atd.. = = ================================================================================== =a 1 =Nastaví u daného objektu, kam se má v programu =a 1 "tlacitko,hop" = = =skočit při jeho stlačení. =cokoliv = = =formát:a 1 "objekt,jméno značky na kterou se má =^hop = = = skočit" =cokoliv = ================================================================================== =a 2 =Zřetězí dva textové řetězce do jednoho. =a 2 "jmeno,^jmeno,ahoj" = = =formát: a 2 "výsledná textová proměnná,první zře-=(k prom.jmeno připojí = = = tězovaný text,druhý zřetězovaný text" =text ahoj = ================================================================================== =a 3 =Sečte dvě čísla.Formát je stejný jak při řetězení=a 3 "deset,4,^sest" = ================================================================================== =a 4 =Znásobí dvě čísla = = ================================================================================== =a 5 =Odečte dvě čísla = = ================================================================================== =a 6 =Uloží text z editačního pole do proměnné =a 6 "edit1,text1" = = =formát:a 6 "název objektu,jméno proměnné" = = ================================================================================== =t =ukončí program = = ================================================================================== VI. Závěrem Tento program je pouze narychlo naprogramovaná ilustrační beta verze, která obsahuje pouze část příkazů,případně nastavení(i když se pomocí ní již lze bez problémů vy- instalovat takřka cokoliv). Také programový kód by mohl být ještě trochu efektivnější(žádný program nemá nej- efektivnější kód již v první verzi). Závěrem tedy pár slov k tomu, jak bych si představoval finální verzi... Přibude více objektů, než pouze edit a tlačítko (např. checkbuton,radiobutton a pod.),vyšší rozmanitost typů,plné vyhodnocování aritmetických výrazů a logických výrazů,komplexnější operace s textem. Přibudou cykly, rozhodovací Case systém,spouštění externích programů, absolutní grafická volnost,možnost přehrávání multimedií. Programovací jazyk v betě se skládá z jedno,nebo dvouzna- kových příkazů, ale nejsou příliš roztříděné do souvis- lostí a tedy i poněkud nepřehledné při prvním seznámení se s tímto prostředím. Ve výsledném programu bych mohl jít dál a vytvořit místo dvouznakových zkratek zcela české programovací prostředí,ve které bude jak pro absolutně jednoduchou manipulaci, tak i pro mnohem komplexnější užití. Uvažoval jsem také o možnosti vytvoření editoru na skripty, kde by si v podstatě uživatel vytvořil vlastní průběh ins- talace způsobem podobným jako se tvoří prezentace v power- pointu,čímž by ani nemusel mít představu o jakémkoliv psaní skriptu jenom by "umístil pár tlačítek" a program by se postaral o vygenerování skriptu. Jan Kytýr xkytyr@fi.muni.cz