Hogyan lehet azt megoldani, hogy az új programverziók felhasználói beavatkozás nélkül jussanak el a kliens gépekre?
Nagyon megköszönném, ha segítenétek, ez egy tétel amit ki kellene dolgoznom, de sajnos a programozási ismereteim még elég gyatrák... Próbáltam rákeresni, de igazán jó találat nem született:S
A tétel szó szerint: "Egy Ön által fejlesztett programot többen is használnak egy helyi
hálózatban. Milyen módon oldaná meg, hogy az új programverziók
felhasználói beavatkozás nélkül jussanak el a kliens gépekre?"
Feltétel még hogy dll-eket is használjunk a megvalósításkor.
Gondolom, akik ebben dolgoznak, azok csípőből vágják a választ:)
Szia.
Leirom én hogyan csinálnám, nem biztos, hogy a legjobb módszer :
1. Mivel "én" fejlesztem a programot teszek bele egy belső változót ami a verziószámot tárolja.
Illetve van hozzá egy ini file vagy registry bejegyzés ami megmodja a proginak, hogy hol a "Frissitési mappa" lásd következő pont.
2. Helyi hálózaton használják, tehát van egy szerver (ha nincs akkor a saját gépemen létre kell hozni egy megosztott könyvtárat) és ide kell pakolni majd az uj verziót a programból. Hivjuk ezt "Frissitési mappának", ezt a mappát be kell rakni vagy az ini filébe vagy a registry bejegyzésbe a teljes eléréssel együtt.
3. Arra, hogy lecsekkold, milyen verziójű a program ami a "Frissitési mappá"-ban van e legegyszerübb megoldás a verzio.dat file bevezetése, amiben (vagy simán szöveges formátumban, vagy akármilyen tipusos formátumban) benne van az uj progi verzió száma. (illetve egy CRC32 ellenőrző összeget is tartalmazzon az uj programról a másolás leellenőrzése céljából)
4. A kliens gépeken elinditott program első lépésként megnézi a verzió.dat file tartalmát és összehasonlitja belső változójában tárolt verzió számmal, ha a filében lévő nagyobb akkor kell frissitést végezni.
5. A frissités első lépése a "Frissitési mappá"-ban lévő prgnev.exe file átmásolása a cliens gépre, valamilyen más néven (pl. Ujprg.exe de ez lehet random név is) (mivel ugyanazon a néven nem tudod másolni, futó process miatt - a windows nem engedi)
6. Ha kész a másolás akkor egy CRC32 ellenőrzés, hogy biztos tökéletes lett-e a másolás és ezen CRC32 összehasonlitása a verzió.dat filében lévővel. Értelemszerű, ha nem egyeznek meg, akkor nem sikerűlt a másolás. Hiba ablak, vagy ujra másolni.
7. A futó program létrehoz egy bat filét amiben a következők szerepelnek nagyjából :
- egy kis varakozas kb 1-sec
- prgnev.exe elmentése prg_verzió.old néven (sima átnevezés)
- ujprogi.exe átnevezése prgnev.exe-re
- prgnév.exe inditása.
8. Ha kész a bat file a progi elinditja a bat filét és kilép.
A bat file elvégzi a dolgát és elinditja a frissitett prgnev.exe progit.
Ezzel elvileg kész vagy.
Tájékoztatod az Usert arról, hogy megtörtént a verzió frissitése (ini filében vagy registryben lévő változó módositásával elérhető, hogy csak egyszer történjen meg a tájékoztatás)
A DLL használatát nem nagyon értem, hogy mire gomdoltak, de :
A másolási rutint, illetve a CRC32 check rutint, a bat file létrehozását bele lehet rakni dll-be.
A bat filét ki lehet hagyni a játékból (de szerintem egyszerübb a dolog vele mint nélküle), mert ugyanazt kell megvalósitani az exe filékben mint a bat filében :
regi prgnev.exe elinditja ujprg.exe-t és kilép, ujprg.exe elmenti regi prognev.exe prg_verzió.exe-ként, illetve lemásolja saját magát prgnev.exe-ként. Majd végűl elinditja prgnev.exe-t és kilép, prgnev.exe kitörli ujprg.exe-t.
Hát szerintem nagyjából ennyi.
Sok sikert.
Üdv.
ÁÁÁÁ nagyon köszönöm, teljesen érthetően és részletesen írtad le:) Ha nem is a legjobb módszer, az se baj, a lényeg, hogy fogalmam legyen róla, hogyan kell ilyesmit megvalósítani! Köszi mégegyszer!!!!!!
Szép napot!:)
Szia.
Közben gondolkodtam a dolgon.
Talán egyszerűbb módszer, ha irsz egy frissités.exe nevezetű progit.
Frissitéskor a prgnev.exe megnézi, hogy kell-e frissitést végezni, ha igen elinditja a frissites.exe progit és kilép (Ha esetleg kell frissités.exe-t átmásolja a "Frissitési mappá"-ból).
A frissités.exe progi a következőket csinálja.
- Átnevezi prgnev.exe-t vagy törli. (Megvárja mig a windows "elengedi" prgnev.exe és úgy nevezi át vagy törli)
- Átmásolja a "Frissitési mappá"-ból prgnev.exe-t prgnev.exe néven. (mivel az előző verzió már át lett nevezve vagy törölve, és nem is fut, az ugyanolyan néven való másolásnak nincs akadálya)
- Lecsekolja, hogy sikeres-e a másolás (CRC32 check)
- Elinditja (most már frissitett) prgnev.exe-t és kilép
prgnev.exe törli frissités.exe-t illetve tájékoztatja a felhasználót a frissités megvalósulásáról.
Talán ez a legegyszerűbb módszer.
Sok sikert.
Üdv.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!