[PROJECT]Metin2PackMaker masodikbela módra

Indította masodikbela, 2016-04-11, 18:20:22

2016-04-11, 18:20:22 Utolsó szerkesztés: 2016-11-10, 08:17:47 Szerző: masodikbela
Volt már itt többször is kérdés, hogy hogyan kellene buildelni a PackMaker-t, és mivel én már kb 1 éve csináltam magamnak 1-et, ezért gondoltam ez is jöhetne ide, ha már van rá igény. Eredetileg az volt a terv, hogy csinálok erről is egy videót, meg valami kis tutorialt hozzá, aztán el is kezdtem a videót, de közben jobb ötletem is támadt... mégpedig hogy inkább a 0-ról összerakok egy projectet amit ide felrakok, aztán akinek semmi más forrása sincsen simán le tudja szedni, meg elkezdtem fejlesztgetni kicsit az alap packmakert, hátha a végén lesz belőle valami eterNexus szerűség :P

PackMaker?

Aki esetleg nem tudná, mint mindennek, ennek is sikeresen ellopták a forrását, az alap kraizy.tgz-ben a novaline/tools mappában található. Ugyebár ezzel lehet csomagolni eix/epk-kat, és mivel megvan a forrás így lehetőség nyílik akár a kulcsokon, esetleg a titkosításon változtatni.

Alapjáraton elég fapados a "program", még tim bontója is sokkal "fejlettebb" ennél, mivel ez xml helyett txt-ből csomagol, alapól ha kicsomagolsz vele nem készít "listát" amivel vissza tudnád csomagolni a dolgokat, nem képes a D:\ meghajtós fájlokat csak a d-re bontani, amennyiben meg nincs ilyened fújhatod (becsomagolás szintén), a titkosítási/kompresszelési módot nem lehet csak kiterjesztésenként állítani, nem képes csak olyan fájlokat "normálisan" becsomagolni amik vele egy szinten vannak a könyvtárban (pl ha a root fájlok /root mappában vannak, akkor úgy fogja becsomagolni hogy root/fájlneve...), és még sorolhatnám is, egyszóval irritálóan keveset tud, így alapból én nem is használnám csak ha nagyon muszáj...

A projekt célja

Nos hát alapvetően az, hogy fordíthatóvá váljon az egész, meg hogy egy tiszta cpp projectet varázsoljak hozzá, ami alapvetően már az első verzióban megvalósul, azonban kedvem támadt időközben fejlesztgetni ezt az egészet, szóval a másodlagos cél az, hogy minél használhatóbbá sikerüljön varázsolni a cumót. Persze ez utóbbiból aztán lehet semmi sem lesz, de mindazonáltal most van hozzá kedvem, szóval majd lesz ami lesz...

A megámon csináltam egy külön mappát a projectnek, így az esetleges updateket oda fogom feltölteni: Letöltés

1.3

Változtatások az előző verzióhoz képest:

  • [FIX] Javítottam a crasht a túl hosszú fájlnevek kibontása esetén.
  • [FIX] Javítottam a hibásan becsomagolt fájlok kibontásakor felmerülő crasht (a fájlok kibontása előtt egy új funkció ellenőrzi, hogy valós-e az adott fájl).

  • Fontos tudnivalók:

  • Ajánlott olvasmány az 1.0-ás changelog, mivel a cucc működésének nagy részét az tartalmazza...
  • Ne akarj másik mappából becsomagolni, csak abból amiben van a MakePack.exe, vagy annak a mappának az almappája, és így tovább (tehát ha az exe a c:\KEKSZ mappában van, akkor nem fogsz tudni pl a C:\Windows mappából becsomagolni, csak a KEKSZ mappán belül, vagy annak a mappáin belül (... jó ezt nem lehet értelmesebben elmondani...))
  • CÉLSZERŰ továbbá a walkert az MakePack exéje mellé tenni a fent említett okból kifolyólag...

  • [spoiler=1.2]
    1.2

    Változtatások az előző verzióhoz képest:

  • [FIX] Javítottam a walkert, mivel nem adta hozzá az elérési úthoz a mappát (fail...).
  • [FIX] Javítottam a 2015-ös buildet, mivel kimaradt néhány lib meg ilyesmi...
  • [NEW] Bekerült a 2013-as vs-hez is egy sln, _vc120-al végződő fájlok a hozzátartozóak értelemszerűen...

  • Fontos tudnivalók:

  • Ajánlott olvasmány az 1.0-ás changelog, mivel a cucc működésének nagy részét az tartalmazza...
  • Ne akarj másik mappából becsomagolni, csak abból amiben van a MakePack.exe, vagy annak a mappának az almappája, és így tovább (tehát ha az exe a c:\KEKSZ mappában van, akkor nem fogsz tudni pl a C:\Windows mappából becsomagolni, csak a KEKSZ mappán belül, vagy annak a mappáin belül (... jó ezt nem lehet értelmesebben elmondani...))
  • CÉLSZERŰ továbbá a walkert az MakePack exéje mellé tenni a fent említett okból kifolyólag...
  • [/spoiler]

    [spoiler=1.1]
    1.1

    Változtatások az előző verzióhoz képest:

  • Készítettem egy külön 2008-as vshez készült projectet, szóval azt már biztosan mindenki tudja használni. Minden fájl aminek a végén _VC90 van azok tartoznak ahhoz a solutionhoz, és értelemszerűen a Metin2PackMaker_VC90.sln a 2008-as vshez készült solution.
  • 2015-ös vses projecthez tartozó fájlokat is átneveztem, ezeknek a vége _VC140.
  • Beraktam egy új makrót a Main.cpp-be, név szerint NOREDUCIO, ami (ahogyan azt a neve is sugalja) kiiktatja a reducio libet, és ezzel együtt egy opciót is, amivel lehetséges állítani a képfájlok tömörítésén, de azt hiszem ezt senki nem akarta eddig sem használni. Természetesen a preprocessors fülnél ezt ki lehet venni, illetve a 2008-as sln-be nincs is alapból berakva.
  • És végül az előző pontnak, (és annak hogy beraktam egy 15-ös vssel fordított cryptlibet) hála mostantól vc140-es compilerrel is fordítható a packmaker.

  • Fontos tudnivalók:

  • Ne akarj másik mappából becsomagolni, csak abból amiben van a MakePack.exe, vagy annak a mappának az almappája, és így tovább (tehát ha az exe a c:\KEKSZ mappában van, akkor nem fogsz tudni pl a C:\Windows mappából becsomagolni, csak a KEKSZ mappán belül, vagy annak a mappáin belül (... jó ezt nem lehet értelmesebben elmondani...))
  • CÉLSZERŰ továbbá a walkert az MakePack exéje mellé tenni a fent említett okból kifolyólag...
  • [/spoiler]

    [spoiler=1.0]
    1.0

    Változtatások:

  • teljesen újraépített project, csak azon includekat, libeket és egyéb projecteket (eterpack, eterlib, eterlocale, eterbase) tartalmaz, amelyek feltétlen kellenek a fordításhoz
  • main.cpp fordítható (a hibája egyébként csak annyi volt, hogy időközben az eterpackon módosítottak, és egy egész classt eltüntettek belőle, amit zsiványul én egy sima "std::string"-el pótoltam (egyébként kikommentelve megvolt az a class csak nem óhajtott többé már vele működni a cuccos + egyébként is elég useless volt ha tudtam pótolni egy sima "stringgel...")
  • D:\-os fájlokat mostantól nem a d meghajtóra óhajtja pakolni, hanem a saját mappájába, egy d_ nevezetű mappába, illetve visszacsomagoláskor is a d_ mappát D:\-ként fogja visszacsomagolni, amennyiben az a mappa a legelső a könyvtárban (szimplán csak azért, mivel a kódban ezt úgy írtam meg, hogyha a fájl elérési útjának a stringjében a 2. karakter egy _ jel akkor :-ra cseréli, illetve fordítva)
  • mostantól a fájlokat nem saját maga mellé fogja tenni közvetlenül, hanem az eix/epk fájlok nevének megfelelő mappába
  • az előző pontból következően hozzáadtam egy új tokent, név szerint AddPath amelynek az lenne a feladata, hogy azt a mappát/mappákat hozzáadja becsomagoláskor a fájlok elérési helyéhez (ugyan akkor azon nem fog változtatni, hogy hova fogja őket becsomagolni)
  • mivel valamiért imád létrehozni egy cshybridcrypt vagy miafene fájlt becsomagoláskor (ami type4 miatt kellene), ezért hozzáadtam egy NoCSHybrid nevű tokent, ami ebben meggátolja a programunkat... (ezt később tervezem normálisra megcsinálni token nélkül, de így hirtelenjében lusta voltam)
  • szintén valamiért imád egy index fájlt létrehozni, ezért ez ellen is csináltam egy NoIndex nevű tokent
  • kiegészítettem a kicsomagolásos részt egy olyan funkcióval, ami kicsomagoláskor létrehoz egy fájlt, amit használhatsz visszacsomagoláskor (a fájl neve mindig packneve.mbcrypt) [fontos megjegyezni, hogy fájlok konvertálásának módját(milyen type-vel volt csomagolva) nem áll módjában olvasni jelenleg (ehhez lusta voltam egyelőre) így neked kell hozzáadni ezeket, hacsak nem RAW-ban akarsz csomagolni :P]
  • készítettem egy walker nevű kis programot AutoIT-ben, amivel gyorsan lekonvertálhatsz magadnak egy mbcrypt-et, amivel be tudod csomagolni a fájlokat (a programot megtalálod lefordítva a walker nevű könyvtárban, és természetesen a forráskódja is ott van mellette)

  • Fontos tudnivalók:

  • A project sikeres lefordításához szükséged lesz valamilyen VisualStudiora, és egy 2008-as toolsetre, mivel a reducio lib nem fordítható csak 2008-assal (egyébként tervezem valahogy megpróbálni ezt kikapni, mivel a kliens nem használja csak a packmaker, így feltételezem nem is kell, hiszen nem volna logikus hogy becsomagoláshoz kell, kicsomagoláshoz meg nem...)
  • Igen ám, de mivel 15-ös vssel csináltam a projectet valószínűleg 2008-as vs-ben nem fogod tudni megnyitni :P (amint lesz kedvem megcsinálom külön a 2008-as projectet mert tudom nincs mindenkinek olyan VS arzenálja mint nekem :P)
  • Ne akarj másik mappából becsomagolni, csak abból amiben van a MakePack.exe, vagy annak a mappának az almappája, és így tovább (tehát ha az exe a c:\KEKSZ mappában van, akkor nem fogsz tudni pl a C:\Windows mappából becsomagolni, csak a KEKSZ mappán belül, vagy annak a mappáin belül (... jó ezt nem lehet értelmesebben elmondani...))
  • CÉLSZERŰ továbbá a walkert az MakePack exéje mellé tenni a fent említett okból kifolyólag...
  • [/spoiler]

    Walker használata/működése

    Szóval tedd be a walker.exe-t a makepack exéje mellé, indítsd el, válaszd ki a becsomagolandó mappát, és létre is jön a kiválasztott mappa nevével egy mbcrypt fájl, ami tartalmazza a fájllistát, a leendő pack nevét, illetve kitölti az "AddPath" tokent is automatikusan, valamit használja a NoCSHybrid és NoIndex tokeneket is alapból (a kódban kiveheted ha neked annyira kell).

    Tudni kell róla, hogy nem adja hozzá a fájllistához a következő kiterjesztésű fájlokat: .err; .exe; .mbcrypt; .log; .au3 valamint nem készít konvertálós listát (tehát RAW-ként fog mindent csomagolni).

    Az mbcrypt fájlt csak simán húzd rá az exére, vagy consolban tallózd be a mappát és írd be: MakePack.exe --pack fájlneve.mbcrypt

    MakePack használata

    Kicsomagolás:
    Konzolban tallózd be a mappát, majd: MakePack.exe --extract eterpackNeve

    Becsomagolás:
    Húzd rá az exére a fájlt, vagy hasonlóan az előbbihez konzolba: MakePack.exe --pack fájlneve

    Compresselés megadása:
    A következő compresselések lehetségesek:

  • CompressExtNameList (type2?)
  • SecurityExtNameList (type3?)
  • PanamaExtNameList (panama)
  • CSHybridEncryptExeNameList (type4) (Exe helyett szerintem Ext-et akartak írni, nvm)

  • Jelenleg csak fájltípusonként tudsz compress-t állítani, amit úgy tehetsz meg, hogy létrehozol egy List compressneve {"kiterjesztés"}-es valamit. Példa:List CompressExtNameList
    {
    "txt"
    "py"
    }



    Kérdés/kérés/panasz/bánat esetén tessék keresni.
    ~masodikbela
    Ha nem látod a válaszom, valamit elrontottál: