Fájlok Patchelése

Fájlok Patchelése
2016-05-03T19:14:30+02:00
2016-05-07T22:02:56+02:00
2022-12-03T15:20:41+01:00
ROCCAT
Az alap elképzelés az lenne,hogy van x darab fájl a kliens gépen,illetve x darab egy ftp szerveren. Azt szeretném valamilyen módon vizsgálni,hogy a kliens gépe tartalmazza-e azokat a fájlokat ami az ftp-n megtalálható, és ténylegesen az a fájl az nem csak a neve egyezik.Abban az esetben ,ha nem egyezik valamelyik fájl ,akkor a kliens elkezdi fel patchelni a torz fájlokat. Ti hogyan valósítanátok meg ezt?
Mutasd a teljes hozzászólást!

  • 1.
    Egy xml file, ami tartalmazza az adott release-hez tartozó fájlok listáját.
    Kliensen tárolni a verziószámot
    "Mergelelm" a két verzió közti különbséget, amiből előáll a frissítendő (distinkt) lista

    2.
    Fájl lista a szerveren az egyes fájlok hash-eivel. Az updater legenerálja a hash-t a kliens oldali file-ból, ha ez nem egyezik, akkor frissít. Ha "felesleges" file van (ami nincs a szerver oldali listában) akkor esetleg töröl is.
    Mutasd a teljes hozzászólást!
  • A distinct-es megoldást valahogy így képzelted el? Úgye ezzel a különbségét vizsgálom,de ezzel nem string értékeket kapok vissza. :/

    var differences = serverpaths.Except(paths); foreach (var difference in differences) { results.Add(difference); }
    Mutasd a teljes hozzászólást!
  • Nem egészen. Valami ilyesmi xml-t képzeltem el:

    <patches> <patch version="1.0"> <file path="alkalmazas.exe" /> <file path="alkalmazas.ini" /> <file path="lang/hu.xml" /> </patch> <patch version="1.1"> <file path="alkalmazas.exe" /> <file path="lang/hu.xml" /> </patch> <patch version="1.2"> <file path="controls.dll" /> </patch> </patches>
    Ha 1.0-ról kell 1.2-re frissíteni, akkor a következő fájlokat kell cserélni:
    alkalmazas.exe
    alkalmazas.ini
    lang/hu.xml
    controls.dll
    (itt ugye alkalmazas.exe és lang/hu.xml csak egyszer szerepel, de kétszer lenne a listában)

    Ha 1.1-ről kell 1.2-re, akkor meg:
    alkalmazas.exe
    lang/hu.xml
    controls.dll
    (itt eleve minden egyszer szerepelne)
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
  • A lista amely tartalmazza az ellenőrizendő fájlokat .txt kiterjesztésű fájlba írtam ki. Tulajdonképp most azzal szendvedek,hogy egy megfelelő algoritmust hozzak létre amely vizsgál a két listából 1-1 elemet,majd ha az egyik nem stimmel nézi a következőt. Amikor a program elérte a 2. lista utolsó elemének összehasonlítását is ,akkor az 1. listában nézi a következőt,és újra kezdődik a 2. lista teljes vizsgálata.
    Mutasd a teljes hozzászólást!
  • Ha az i értéke nem eléggé nagy,akkor nem vizsgálja meg az összes elemet,ha meg nagy akkor Index was out of range fogad(Konkrétan 1300 fájlról beszélünk nagyjából.). Lehet csak nekem nem egyértelmű mi is a hiba megoldása. List<string> paths = new List<string>(); List<string> file = new List<string>(); int j = 0; while ((file_path = reader.ReadLine()) != null) { file.Add(file_path); finded1++; } string[] dirs = Directory.GetFiles(@a2OAPath, "*.*", System.IO.SearchOption.AllDirectories); foreach (string dir in dirs) { paths.Add(dir); finded2++; } for (int i = 0; i < finded1 + finded2; i++) { string compare1 = a2OAPath + file[j]; string compare2 = paths[i]; if (compare1 == compare2) { MessageBox.Show("debug1"); j++; i = 0; } else { notfound++; if (notfound == finded2) { MessageBox.Show("debug2"); j++; i = 0; notfound = 0; } else { //MessageBox.Show("debug3"); } } }
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd