Főoldal
Üdvözlet
Látogatók
Az Inno Setup
Letöltések
Levelezőlista
GyIK / FAQ
Tudásbázis
Wizard Images
Translation
Visual Basic .NET
Visual Basic 6.0
Kapcsolat
Jordan Russell's Software
Egonsoft Oldalak
 látogató járt itt 1999. december óta
|
| Gyakran Ismételt Kérdések |
Utoljára frissítve: 2003.10.07.
Működés
Problémák
- Fordító hibaüzenet: "Elhagyott vagy hibásan használt idézőjel a paraméterben"
("Mismatched or misplaced quotes on parameter")
- Az alkalmazásom nem találja a fájljai némelyikét, ha a Telepítő által készített parancsikonnal indítom. Tökéletesen működik, ha duplán kattintok az alkalmazás EXE-jére az Intézőben.
- Ha az alkalmazásom egy új verzióját telepítem a régebbi verzió eltávolítása nélkül, egy második bejegyzés lesz a Vezérlőpult Programok telepítése és törlése listájában.
- Miért jelenik meg "A telepítőfájlok megsérültek" üzenet néhány rendszeren?
- Telepítő hibaüzenet: "Nem lehet regisztrálni a DLL-t/OCX-et: A DllRegisterServer export nem található"
("Unable to register the DLL/OCX: DllRegisterServer export not found")
- Az eltávolítás után, a telepítés közben létrehozott könyvtárak továbbra is megmaradnak.
- Futtatok egy parancsfájlt (batch fájl) a [Run] szakaszban, de az ablak a képernyőn marad, miután befejezte a végrehajtását. Szeretném "kilépéskor bezárni".
- Megváltoztattam a DefaultDirName-et a szkriptemben, de amikor futtatom a Telepítőt, a korábbi könyvtár az alapértelmezett.
- Van két [Icons] bejegyzésem ugyanazzal a Name paraméterrel, de közülük csak az egyik kerül telepítésre.
- A Telepítő nem várja meg, hogy a [Run] bejegyzések által végrehajtott programok befejeződjenek.
Telepítési feladatok
Hogyan telepítsem...?
Kompatibilitás
Egyéb
Működés
Az Inno Setup szövegének más nyelvre való fordításához nem szükséges a forráskód módosítása. Egyszerűen készíts egy másolatot a Default.isl fájlról (az Inno Setup tartalmazza), és kezdd el átírni a szöveget benne. (Ne módosítsd közvetlenül a Default.isl fájlt, különben elvesznek a módosításaid, amikor egy új Inno Setup verziót telepítesz.) Olvasd el a "[Messages] Section" témakört az Inno Setup súgófájljában néhány fontos tanácsért.
Miután befejezted az új .isl fájl készítését, készíts egy [Languages] szakaszt, hogy a fordító (compiler) ezt használja:
[Languages]
Name: fordításom; MessagesFile: "compiler:Fordításom.isl"
Ha az Inno Setup egy a 4.0-nál előbbi változatát használod, ezt használd helyette:
[Setup]
MessagesFile=compiler:Fordításom.isl
A magyar nyelvű fordítás letölthető a Letöltések oldalról, további fordításokat Jordan Russell Inno Setup Translations oldaláról tölthetsz le. A Letöltések oldalról letölthetsz egy programot is, amely segít az .isl fájlok szerkesztésében.
Az Inno Setup 2.0.6 teljeskörű MBCS támogatást nyújt. Vezérbájt (lead byte) ellenőrzést végez minden fájnévben és a konstansátadásoknál, így már nem hibázhatja el a követőbájtokat (trail byte) a backslasheknél ("\") vagy a kapcsoszárójeleknél ("{").
A 2.0.6 verziónál régebbiek nem tartalmaznak speciális MBCS támogatást.
Jelenleg Jordan Russellnek nem szerepel a tervei között az Inno Setup Windows Installer kiadása. A Windows Installer "támogatása" valószínűleg magában foglalná a program teljes újraírását - ez olyan valami, amihez nincs Jordan Russellnek ideje vagy kedve.
Ez jelenleg nem lehetséges. Viszont feltételezhetően a következő kiadásokban lesz egy opció ennek megadásához. Ez az opció valószínűleg csak NT/2000/XP alatt lesz elérhető, mivel a Windows 95/98-ból hiányzik az UpdateResource funkció, amely lehetővé teszi az erőforrások (resources) módosítását lefordított (compiled) EXE-kben.
De ma már léteznek mások által készített programok, mint az Inno Setup Icon Replacer, a ReplaceIcon, a Microangelo, és a Resource Hacker, amelyek képesek a Setup.exe ikonjának megváltoztatására.
Az Inno Setup 4 támogatja az új Pascal Scripting lehetőségen keresztül.
Megjegyzés: a korábbi Inno Setup verziókkal is lehetséges volt különböző fájlok telepítése a Windows verziójától függően.
Nem, és amikor ez íródott, még nem voltak Jordan Russellnek tervei ilyen lehetőség hozzáadásáról.
Nem, és nincs is ilyen jellemző tervezve (vissza lehetne vele élni). Ha az a szándékod, hogy a felhasználói beavatkozás tartson a minimálishoz, használd a Disable* [Setup] szakasz beli direktívákat.
Igen. Használj egy {reg:...} konstansot a DefaultDirName-ben. Például:
[Setup]
DefaultDirName={reg:HKLM\Software\Programom,Path|{pf}\Programom}
A {reg:...} konstansok használatára vonatkozó további információkat az Inno Setup súgófájljának "Constants" témakörében találsz.
Problémák
Ez az üzenet általában akkor jelenik meg, ha megpróbálsz egy idézőjel (") karaktert tenni a paraméter adatai közé, de nem duplán, ahogy szükséges. További információkért olvasd el a "Parameters in Sections" az Inno Setup súgófájljában.
Az alkalmazásod valószínűleg nem határozza meg a megnyitni próbált fájlok útvonalát, így várható, hogy az aktuális könyvtárban keresi őket. Az Inno Setup alapértelmezésben nem ad értéket a parancsikonok "Kezdet" mezőjének, ez azt jelenti, hogy a Windows magától az aktuális könyvtárat választja ki, ami általában nem azonos az alkalmazásod könyvtárával. Ennek az egyszerű műveletnek az elvégzésével; egy "WorkingDir: {app}" paramétert kell egyszerűen az [Icons] szakasz bejegyzéséhez adni.
Bár mégse ez a legajánlottabb megoldás. A legtöbb esetben, az alkalmazásokat várhatóan nem a saját könyvtárukból indítják. Mindig meg kell határozniuk az általuk megnyitott fájlok teljes útvonalát. A Delphiben vagy a C++Builderben lehetőség van az EXE-t tartalmazó könyvtár teljes útvonalának a következő hívással: ExtractFilePath(ParamStr(0)). Ha például hozzá akarod kapcsolni a "Fájl.txt" nevű fájlt, a következőt kell használnod: ExtractFilePath(ParamStr(0)) + 'Fájl.txt'.
Ez a hibaüzenet akkor jelenik meg, ha egy telepítésre vonatkozó fájlnak (pl., setup.exe, setup.1) hibás a mérete, vagy egy fájl valamelyik részének nem sikerül a CRC ellenőrzése. Más esetben nem jelenik meg ez az üzenet.
Ha a telepítődet interneten keresztül terjeszted, és sokan jelzik ezt a hibát, lehet, hogy a webszervered néhány fájlt a kapcsolat idő előtti megszakításával kézbesít. Ellenőriztesd a felhasználóiddal a letöltött fájl(ok) bájtokban mért méretét.
Ha a telepítődet CD-ROM-on vagy hajlékonylemezen terjeszted, hehet, hogy a CD-ROM vagy a hajlékonylemez rossz, vagy esetleg meghibásodott a meghajtó.
Ez akkor történik, ha megváltoztatod a AppId beállítást a verziók között, vagy ha az AppId nincs megdva, az AppName beállítást. Ha ezt teszed, a Telepítő nem tudhatja, hogy a két verzió ugyanazé az alkalmazásé, és így egy új bejegyzést hoz létre a Programok telepítése és törlése listájában. Emellett egy új eltávolítási naplófájl (unins???.dat) készül. Ennek a magától érthetődő megoldása, hogy ne változtasd meg az AppId vagy AppName beállítást.
Ha meg kell változtatnod az AppName beállítást egy új verzióban, állítsd az AppId beállítást az előző verzió AppId vagy AppName beállításának értékére.
Ez az üzenet általában azt jelenti, hogy az általad "regserver" jelöléssel (flag) ellátott fájl nem rendelkezik a regisztrálás lehetőségével. Távolítsd el a "regserver" jelölést (flag) a [Files] szakasz beli bejegyzésből és az üzenet eltűnik.
Van néhány ok, amiért egy könyvtár nem kerülhet eltávolításra:
- Már létezett a telepítés előtt. Alapértelmezésben a telepítéseltávolító biztonságosan jár el, és nem távolítja el azokat a könyvtárakat, amiket a telepítő nem hozott létre.
- Fájlokat vagy alkönyvtárakat tartalmaz. Használd a [UninstallDelete] szakaszt, ha szükséged van rá, hogy a telepítéseltávolító további fájlokat/könyvtárakt töröljön.
- Egy futó folyamat aktuális könyvtára az adott könyvtár.
Megjegyzés: Az Inno Setup 2.0.1 előtti verzióiban, a könyvtárakat meg kell határozni a [Dirs] vagy az [UninstallDelete] szakaszok valamelyikében, hogy a telepítéseltávolító törölje őket. Az Inno Setup újabb verzióiban a [Files] szakasz beli bejegyzések által létrehozott könyvtárakat automatikusan törli a telepítéseltávolító, ha nem léteztek a telepítés előtt.
Tim Rude-tól:
A legegyszerűbb mód ahhoz, hogy egy olyan parancsfájlt kapjunk, amelyik automatikusan bezáródik kilépéskor, a képernyő törlése a végén a CLS parancs használatával.
--- parancsfájl 1 ---
@echo off
echo Hello Világ
echo Ez a parancsfájl NEM záródik be kilépéskor
--- parancsfájl 2 ---
@echo off
echo Hello Világ
echo Ez a parancsfájl BEZÁRÓDIK kilépéskor
cls
Indításkor a Telepítő megnézi a rendszerleíró-adatbázist, ugyanaz az alkalmazás telepítve lett-e már korábban, és ha igen, az előző telepítés könyvtárát fogja alapértelmezettként mutatni a felhasználónak a varázslóban. Ha eltávolítod az alkalmazást, és újra futtatod a Telepítőt, az új DefaultDirName beállítást fogja használni. Ha ki akarod kapcsolni ezt a lehetőséget, állítsd a UsePreviousAppDir-t "no"-ra.
Két fájlnak nem lehet ugyanaz a neve, és mivel a parancsikonok fájlok, emiatt két parancsikonnak nem lehet ugyanaz a neve.
Először győződj meg róla, hogy nem használod a "nowait" vagy a "waituntilidle" jelöléseket (flags) a [Run] bejegyzésben. Ezek a jelölések megakadályozzák a Telepítőt, hogy megvárja, amíg a folyamat teljesen ben nem fejeződik.
Ha nem használod ezeket a jelöléseket, és még mindig nem tűnik úgy, hogy vár a programra, hogy befejeződjön, akkor valószínűleg az történik, hogy az EXE, amit futtatsz, átvált egy másik folyamatra, majd azonnal befejezi önmagát, ez azt eredményezi, hogy a Telepítő azt gondolja, hogy a program befejeződött. Ez ismerten megtörténik a régebbi InstallShield alapú telepítőkkel (ennek kiküszöbölésére, próbáld meg használni a /SMS kapcsolót).
Egy egyszerű mód annak ellenőrzésére, hogy ezt teszi-e a program, hogy futtasd a "START /WAIT ProgramNév.exe"-t a parancssorból, és látod, hogy visszatértél-e a parancssorhoz mielőtt kilép a program.
Telepítési feladatok
Először készíts például egy "weboldal.url" nevű fájlt, majd írd bele a következő sorokat:
[InternetShortcut]
URL=http://web.oldal.cim/
Végül add hozzá a szkriptedhez a következő sorokat:
[Files]
Source: "weboldal.url"; DestDir: "{app}"
[Icons]
Name: "{group}\A Web oldalam megtekintése"; Filename: "{app}\weboldal.url"
Frissítsd az Inno Setupot legalább 1.3.11 verzióra, ezután használd a következőket:
[Icons]
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Programom"; Filename: "{app}\Programom.exe"
Használd a WorkingDir paramétert az [Icons] szakasz beli bejegyzésnél.
Először állítsd a [Setup] szakaszban a "ChangesAssociations" direktívát "yes"-re. Majd hozz létre [Registry] bejegyzéseket az alábbiak szerint.
[Registry]
Root: HKCR; Subkey: ".pfm"; ValueType: string; ValueName: ""; ValueData: "ProgramomFájlja"; Flags: uninsdeletevalue
A ".pfm" a társítandó kiterjesztés. A "ProgramomFájlja" a rendszerleíró-adatbázisban (registry) tárolt fájltípus belső neve. Győződj meg róla, hogy egy egyedi nevet használsz-e, nehogy véletlenül felülírd egy másik alkalmazás regisztrációs kulcsát.
Root: HKCR; Subkey: "ProgramomFájlja"; ValueType: string; ValueName: ""; ValueData: "Programom fájlja"; Flags: uninsdeletekey
A "Programom fájlja" feljebb fájltípus Intézőben megjelenő neve.
Root: HKCR; Subkey: "ProgramomFájlja\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\PROGOM.EXE,0"
A "DefaultIcon" az a regisztrációs kulcs, amely meghatározza a fájltípushoz rendelt ikont tartalmazó fájl nevét. A ",0" arra utasítja az Intézőt, a PROGOM.EXE-ben található első ikont használja. (",1" a második ikont jelenti.)
Root: HKCR; Subkey: "ProgramomFájlja\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\PROGOM.EXE"" ""%1"""
A "shell\open\command" az a regisztrációs kulcs, amely meghatározza a végrehajtandó programot, amikor a megadott típusú fájlra duplán kattintunk az Intézőben. Az idézőjelek a hosszú-fájlnevek helyes kezelése miatt vannak a parancssorban.
Windows NT/2000/XP alatt a környezeti változók a rendszerleíró-adatbázisban vannak karakterláncokként tárolva, így a [Registry] szakasz használatával lehet őket befolyásolni. A rendszerszintű környezeti változók a következő helyen találhatók:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
A felhasználófüggő környezeti változók a következő helyen találhatók:
HKEY_CURRENT_USER\Environment
Windows 95/98/Me alatt módosítanod kell AUTOEXEC.BAT-ot a környezeti változók beállításához. Az Inno Setup nem tartalmaz beépített lehetőséget ehhez, bár írhatsz egy kis programot, ami elvégzi, és lefuttathatod a [Run] szakaszban (további információ).
Az Inno Setup 1.3.15 és újabb verziói támogatják a "closeonexit" és a "dontcloseonexit" jelöléseket (flags) az [Icons] szakaszban.
Az Inno Setupnak jelenleg nincs erre a feladatra meghatározott megoldása, de másolatot készíthetsz a fájlról, mielőtt felülíródik. A következő egy a [Files] szakasz beli bejegyzés hasonlít ehhez:
Source: "{app}\Programom.exe"; DestDir: "{app}\biztonsági másolat"; Flags: external skipifsourcedoesntexist uninsneveruninstall
Ez megvalósítható a MinVersion és/vagy az OnlyBelowVersion paraméterekkel egy bejegyzésnél (entry). Nézd meg a Common Parameters tárgyat a dokumentációban a részletekről.
Itt egy egyserű példa, hogy hogyan lehet telepíteni egy fájlt NT felületekre (Windows NT/2000/XP) és egy másik fájlt nem NT felületekre (Windows 95/98/Me):
[Files]
Source: "{app}\WinNT2000XP.exe"; DestDir: "{app}"; MinVersion: 0, 1
Source: "{app}\Win9598Me.exe"; DestDir: "{app}"; MinVersion: 1, 0
a "0" azt jelenti, hogy soha nem kerül telepítésre; az "1" azt jelenti, hogy minden verzión telepítésre kerül (azaz 1.0 vagy újabb verzión).
Megjegyzés: A fenti technika nincs korlátozva a [Files] szakaszra; a MinVersion és az OnlyBelowVersion a legtöbb szakaszban használható.
Jelenleg nincs beépített támogatás engedélyek (vagy "biztonság") beállítására, de ennek elvégzésére használhatsz egy SetACL.exe nevű programot. Itt egy példa:
[Files]
Source: "SetACL.exe"; DestDir: "{tmp}"
[Run]
; "Módosítás" engedély adása Mindenkinek az {app}\adat könyvtárra
Filename: "{tmp}\SetACL.exe";
Parameters: """{app}\adat"" /dir /grant S-1-1-0 /change /sid"
; Engedély adása Mindenkinek értékek módosítására a HKEY_LOCAL_MACHINE\SOFTWARE\Cégem\Programom alatt
Filename: "{tmp}\SetACL.exe";
Parameters: """MACHINE\SOFTWARE\Cégem\Programom"" /registry /grant S-1-1-0 /set_val /sid"
A megoldás a Tudásbázis Egyéni funkciók készítése oldalán található.
Hogyan telepítsem...?
Egy OCX fájl telepítése a következőképpen ajánlott.
[Files]
Source: "ComCtl32.ocx";
DestDir: "{sys}";
CopyMode: alwaysskipifsameorolder;
Flags: restartreplace sharedfile regserver
Olvasd el a Tudásbázis ide vonatkozó oldalát.
Olvasd el a Tudásbázis ide vonatkozó oldalát.
Ha az alkalmazásodnak egy frissített verziójú COMCTL32.DLL-re van szüksége, utasíthatod a felhasználóidat, hogy
töltsék le
a COMCTL32 frissítését a Microsofttól, vagy hívhatod a COMCTL32 frissítést a telepítésedből a következő sorok használatával:
[Files]
Source: "50comupd.exe"; DestDir: "{tmp}"
[Code]
function ShouldInstallComCtlUpdate: Boolean;
var
MS, LS: Cardinal;
begin
// Csak akkor telepíti, ha a létező comctl32.dll < 5.80
Result := False;
if GetVersionNumbers(ExpandConstant('{sys}\comctl32.dll'), MS, LS) then
if MS < $00050050 then
Result := True;
end;
[Run]
Filename: "{tmp}\50comupd.exe"; Parameters: "/r:n /q:1"; Check: ShouldInstallComCtlUpdate
Ne próbáld a COMCTL32.DLL-t közvetlenül a [Files] szakasz használatával telepíteni; a Microsoft nem engedélyezi, és ez veszélyes.
A BDE 32-bites verziójának Inno Setuppal történő telepítésének részleteiről a Tudásbázis A BDE telepítése oldalán olvashatsz.
Olvasd el a Tudásbázis ide vonatkozó oldalát.
Kompatibilitás
A jelenleg támogatott platformok magukban foglalják a következőket: Windows 95, 98, 2000, XP, Me és NT 4.0.
Jordan Russell jelenleg elsősorban Windows 2000-et használ fejlesztésre, így a Windows 2000 kompatibilitás a legelső.
Ha jelentős összetevőket módosít, rendszerint személyesen teszteli őket minden támogatott Windows verzió alatt.
Az Inno Setup 16-bites verziója megszűnt a 1.3 verziótól kezdődően. A Windows NT 3.51 támogatása megszűnt a 3.0 verziótól kezdődően.
Az Inno Setup teljesen Y2K kompatibilis az 1.09 óta mindenképp. Valószínűleg már az Inno Setup korábbi verziói is Y2K kompatibilisek voltak, de visszamenőleg nincsenek tesztelve.
A telepítő egyedül akkor használja a dátumokat, amikor összehasonlítja a fájlok dátumbejegyzéseit másolásuk előtt. És ezt is csak akkor teszi, amikor feldolgozza a [Files] szakaszban azokat a bejegyzéseket, amelyek tartalmazzák a comparetimestamp jelölést (flag). A 16 bites, 1.11i vagy újabb verziójú Inno Setup 2107-ig tudja helyesen kezelni a fájlok évszámát, ez a legnagyobb szám a 16 bites Windows API-hoz (az 1.11i-nél korábbi verziók 2043-ig tudják kezelni az évszámokat). Az Inno Setup 32 bites változata az 1.09 verzió óta nem rendelkezik évszámokra vonatkozó korlátozással.
Egy általános, Inno Setuppal készített, Windows NT/2000/XP alatt futó telepítő nem igényel rendszergazdai vagy "kiemelt felhasználói" jogosultságokat, bár néhány kivétel lejjebb olvasható:
Dolgok, melyekhez rendszergazdai jogosultságokra van szükség Windows NT/2000/XP alatt:
- Az "AdminPrivilegesRequired=yes" be van állítva a szkript [Setup] szakaszában, ami megszakítja a Telepítőt egy hibaüzenettel, ha a felhasználó nem rendelkezik rendszergazdai jogosultságokkal. (Az alapértelmezett beállítás az AdminPrivilegesRequired direktívához a "no".)
- A "restartreplace" jelölés (flag) használva van a [Files] szakaszban. Ezen jelölés (flag) hatására az Inno Setup hívja a MoveFileEx funkciót, amely megpróbál írni a "HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Session Manager" kulcsba. Az ebbe a kulcsba való írás a Rendszergazdákra van korlátozva.
- Kulcs írása a HKEY_USERS\.DEFAULT kulcs alá a [Registry] szakasz használatával. Az ebbe a kulcsba való írás a Rendszergazdákra van korlátozva.
Dolgok, melyekhez rendszergazdai vagy "kiemelt felhasználói" jogosultságokra van szükség Windows 2000/XP alatt:
- A "regserver" jelölés (flag) használata a [Files] szakaszban. A legtöbb esetben egy DLL regisztrálása magában foglalja a HKEY_CLASSES_ROOT kulcsba való írást, ehhez nincs jogosultsága az általános felhasználóknak.
- A "sharedfile" jelölés (flag) használata a [Files] szakaszban. Ezen jelölés (flag) hatására az Inno Setup létrehoz/frissít egy "HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ SharedDLLs" beli értéket. Az általános felhasználók nem írhatnak ebbe a kulcsba.
- A FontInstall paraméter használata a [Files] szakaszban.
- Kulcs írása a HKEY_LOCAL_MACHINE vagy a HKEY_CLASSES_ROOT kulcs alá a [Registry] szakasz használatával. Az általános felhasználók nem írhatnak ezekbe a kulcsokba.
Az Inno Setup nem igényli az írási jogot a WINNT könyvtárba, vagy egyéb, feljebb nem említett regisztrációs kulcsokhoz.
Mi változik, ha a telepítőt egy rendszergazdai jogosultságokkal nem rendelkező felhasználó futtatja?
- A regisztrációs kulcs a Programok hozzáadása Vezérlőpult bejegyzés számára a HKEY_CURRENT_USER-ben kerül létrehozásra a HKEY_LOCAL_MACHINE helyett. Így csak az a felhasználó látja a bejegyzést a Programok hozzáadásában, aki a programot telepítette.
- A "{group}" konstans mindig az aktuális felhasználó profiljára mutat, ellentétben az All Users profillal.
- Minden "{common...}" konstans megegyezik a "{user...}" konstanssal.
- A programot bármely felhasználó eltávolíthatja. (Ha egy rendszergazda telepít egy programot, akkor csak egy rendszergazda távolíthatja el azt.)
Egyéb
Az Inno Setup nem alkalmaz önkényes korlátokat arra vonatkozóan, hogy mennyi fájlt, parancsikont, rendszerleíró bejegyzést, stb. foglalhat magában egy telepítés. Azonban tarts szem előtt, hogy a Telepítő memóriát igényel minden egyes bejegyzéshez egy szkriptben. Például nagyjából 120 byte memóriát igényel minden egyes [Files] bejegyzés számára.
Az Inno Setup 3.x és korábbi verzióiban, a telepítések és az egyes fájlok nem haladhatják meg a 2 GB-ot, mert a legtöbb helyen nem használ 64-bites aritmetiát. Ez kijavításra került az Inno Setup 4-ben.
Ha a Mégsére kattintottak, a Telepítő elkezdi visszaállítani a módosításokat, az Eltávolító programhoz nagyon hasonló módon. Így soha sem marad meg egy részben telepített alkalmazás sem.
Magyar Inno Setup oldal - Copyright © 1999-2008 Pál Kornél. Minden jog fenntartva.
|
|
|