mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-12-29 20:30:54 +00:00
removed no more needed patcher files
This commit is contained in:
parent
f5459a1b9b
commit
63b02cfc00
6 changed files with 0 additions and 1235 deletions
|
@ -1,3 +0,0 @@
|
||||||
FILE(GLOB SRC *.uxt)
|
|
||||||
|
|
||||||
INSTALL(FILES ${SRC} DESTINATION "${RYZOM_SHARE_PREFIX}/patcher")
|
|
|
@ -1,191 +0,0 @@
|
||||||
// HASH_VALUE 6B09AC86E0363C89
|
|
||||||
// INDEX 0
|
|
||||||
LanguageName [Deutsch]
|
|
||||||
|
|
||||||
// HASH_VALUE 3259CCA76B39A0A8
|
|
||||||
// INDEX 1
|
|
||||||
TheSagaOfRyzom [Ryzom]
|
|
||||||
|
|
||||||
// HASH_VALUE C7CC3BE0464ED819
|
|
||||||
// INDEX 333
|
|
||||||
uiOnChecking [ÜBERPRÜFE DATEIEN FÜR DEN PATCH...]
|
|
||||||
|
|
||||||
// HASH_VALUE 3DDF0D8BBD1D3C7A
|
|
||||||
// INDEX 348
|
|
||||||
uiErrCantPatch [Fehler : Du kannst nicht patchen, da die PatchURL noch nicht in die Datenbank eingegeben wurde (Fehlercode 16).]
|
|
||||||
|
|
||||||
// HASH_VALUE E1B933F053557A69
|
|
||||||
// INDEX 349
|
|
||||||
uiNeedToPatch [Information : Du musst patchen, um Zugang zu diesem Shard zu erlangen.]
|
|
||||||
|
|
||||||
// HASH_VALUE 1CFD71DE1856F357
|
|
||||||
// INDEX 350
|
|
||||||
uiErrServerLost [Fehler : Die Verbindung zum Server wurde während des Patchens unterbrochen.]
|
|
||||||
|
|
||||||
// HASH_VALUE 0781700FFA41B8F9
|
|
||||||
// INDEX 351
|
|
||||||
uiPatching [PATCHE, BITTE WARTEN]
|
|
||||||
|
|
||||||
// HASH_VALUE B11FE4024EE3A1CB
|
|
||||||
// INDEX 352
|
|
||||||
uiErrPatchApply [Fehler : Patchprozess beendet, aber der Patch konnte nicht erfolgreich eingesetzt werden.]
|
|
||||||
|
|
||||||
// HASH_VALUE 428B3D2BDA3B2CD2
|
|
||||||
// INDEX 353
|
|
||||||
uiErrChecking [Fehler : Patchdateien versagen - Überprüfung.]
|
|
||||||
|
|
||||||
// HASH_VALUE 40D0242C40D0242C
|
|
||||||
// INDEX 354
|
|
||||||
uiKb [KB]
|
|
||||||
|
|
||||||
// HASH_VALUE 4050243440502434
|
|
||||||
// INDEX 355
|
|
||||||
uiMb [MB]
|
|
||||||
|
|
||||||
// HASH_VALUE 9FA5A06DD895B637
|
|
||||||
// INDEX 356
|
|
||||||
uiLoginGetFile [Lade Datei:]
|
|
||||||
|
|
||||||
// HASH_VALUE 373988CC56A4B9DB
|
|
||||||
// INDEX 357
|
|
||||||
uiDLFailed [Download vom Notfall-Server gescheitert, Login wurde abgebrochen]
|
|
||||||
|
|
||||||
// HASH_VALUE 0DD314AEEB0A6833
|
|
||||||
// INDEX 358
|
|
||||||
uiDLURIFailed [Download vom URI gescheitert (neuer Versuch):]
|
|
||||||
|
|
||||||
// HASH_VALUE 9FEF11F92FE58883
|
|
||||||
// INDEX 359
|
|
||||||
uiNoMoreURI [Keine Verbindung mehr zum URI, versuche den Notfall-Server]
|
|
||||||
|
|
||||||
// HASH_VALUE D126843FEAF6BF89
|
|
||||||
// INDEX 360
|
|
||||||
uiDLWithCurl [Datei laden mit Curl:]
|
|
||||||
|
|
||||||
// HASH_VALUE 5DF5B8902957A38B
|
|
||||||
// INDEX 361
|
|
||||||
uiDecompressing [Dekomprimiere Datei:]
|
|
||||||
|
|
||||||
// HASH_VALUE 5C24504228490833
|
|
||||||
// INDEX 362
|
|
||||||
uiCheckInt [Überprüfe Integrität:]
|
|
||||||
|
|
||||||
// HASH_VALUE 4C08EC7AE63A3CA8
|
|
||||||
// INDEX 363
|
|
||||||
uiNoVersionFound [Keine Version gefunden]
|
|
||||||
|
|
||||||
// HASH_VALUE EA9BF07087F0DE5C
|
|
||||||
// INDEX 364
|
|
||||||
uiVersionFound [Version gefunden:]
|
|
||||||
|
|
||||||
// HASH_VALUE 6CBAA4C2CED054DA
|
|
||||||
// INDEX 365
|
|
||||||
uiApplyingDelta [Delta anlegen:]
|
|
||||||
|
|
||||||
// HASH_VALUE 6BA9B484A5229440
|
|
||||||
// INDEX 366
|
|
||||||
uiClientVersion [Klientversion]
|
|
||||||
|
|
||||||
// HASH_VALUE 2EAADC9D27B47047
|
|
||||||
// INDEX 367
|
|
||||||
uiServerVersion [Serverversion]
|
|
||||||
|
|
||||||
// HASH_VALUE A8B6FC32E686BF9C
|
|
||||||
// INDEX 368
|
|
||||||
uiCheckingFile [Überprüfe Datei]
|
|
||||||
|
|
||||||
// HASH_VALUE 6618CC5E4408BC94
|
|
||||||
// INDEX 369
|
|
||||||
uiNeededPatches [Benötigte Patches :]
|
|
||||||
|
|
||||||
// HASH_VALUE 57D72C08D558C375
|
|
||||||
// INDEX 370
|
|
||||||
uiCheckInBNP [Überprüfe innerhalb BNP :]
|
|
||||||
|
|
||||||
// HASH_VALUE 8810F72436CBB610
|
|
||||||
// INDEX 371
|
|
||||||
uiSHA1Diff [BNP Zwangsentpackung : Checksumme stimmt nicht überein :]
|
|
||||||
|
|
||||||
// HASH_VALUE 0328885969AA93AC
|
|
||||||
// INDEX 372
|
|
||||||
uiCheckEndNoErr [Dateiüberprüfung ohne Fehler beendet]
|
|
||||||
|
|
||||||
// HASH_VALUE 9759642196BA93B6
|
|
||||||
// INDEX 373
|
|
||||||
uiCheckEndWithErr [Dateiüberprüfung mit Fehler beendet:]
|
|
||||||
|
|
||||||
// HASH_VALUE 03196C6669AA93A9
|
|
||||||
// INDEX 374
|
|
||||||
uiPatchEndNoErr [Dateipatch ohne Fehler beendet]
|
|
||||||
|
|
||||||
// HASH_VALUE E2A45B80D6C8F35E
|
|
||||||
// INDEX 375
|
|
||||||
uiPatchEndWithErr [Patch fehlgeschlagen!]
|
|
||||||
|
|
||||||
// HASH_VALUE 97987345E8D46F43
|
|
||||||
// INDEX 376
|
|
||||||
uiPatchDiskFull [Ungenügender Festplattenspeicher!]
|
|
||||||
|
|
||||||
// HASH_VALUE 67818F3F0F656F1B
|
|
||||||
// INDEX 377
|
|
||||||
uiPatchWriteError [Fehler beim Schreiben auf die Festplatte! (Festplatte voll?)]
|
|
||||||
|
|
||||||
// HASH_VALUE 54956061978AB897
|
|
||||||
// INDEX 378
|
|
||||||
uiProcessing [Bearbeite Datei:]
|
|
||||||
|
|
||||||
// HASH_VALUE D183CC5E53E4E24A
|
|
||||||
// INDEX 379
|
|
||||||
uiUnpack [BNP entpacken:]
|
|
||||||
|
|
||||||
// HASH_VALUE 57282453CE0D24A5
|
|
||||||
// INDEX 380
|
|
||||||
uiUnpackErrHead [Bnp-Header unlesbar:]
|
|
||||||
|
|
||||||
// HASH_VALUE 3EC17830B80D1B1D
|
|
||||||
// INDEX 381
|
|
||||||
uiRebootConfirm [Klicke, um neu zu starten. Bitte warten, Ryzom startet dann automatisch.]
|
|
||||||
|
|
||||||
// HASH_VALUE 809F582A06023625
|
|
||||||
// INDEX 382
|
|
||||||
uiRebootBut [HIER KLICKEN, UM NEU ZU STARTEN]
|
|
||||||
|
|
||||||
// HASH_VALUE EA9888EBCAF59355
|
|
||||||
// INDEX 383
|
|
||||||
uiChangeDate [Das Mod-Datum ändern :]
|
|
||||||
|
|
||||||
// HASH_VALUE 4589434CDD042E75
|
|
||||||
// INDEX 384
|
|
||||||
uiChgDateErr [File-Zeit unveränderbar :]
|
|
||||||
|
|
||||||
// HASH_VALUE 5BCA0C0C45A99719
|
|
||||||
// INDEX 385
|
|
||||||
uiNowDate [Wir haben den :]
|
|
||||||
|
|
||||||
// HASH_VALUE 485B4807F0581777
|
|
||||||
// INDEX 386
|
|
||||||
uiSetAttrib [File-Attribute einstellen :]
|
|
||||||
|
|
||||||
// HASH_VALUE 5EB5789353166D5E
|
|
||||||
// INDEX 387
|
|
||||||
uiAttribErr [Zugang unlesbar :]
|
|
||||||
|
|
||||||
// HASH_VALUE C2B6FF326665E080
|
|
||||||
// INDEX 388
|
|
||||||
uiDelFile [File löschen :]
|
|
||||||
|
|
||||||
// HASH_VALUE 0D262B3499A4A35A
|
|
||||||
// INDEX 389
|
|
||||||
uiDelErr [ File kann nicht gelöscht werden:]
|
|
||||||
|
|
||||||
// HASH_VALUE C238BC781514042B
|
|
||||||
// INDEX 390
|
|
||||||
uiDelNoFile [ File löschen (Keine File)]
|
|
||||||
|
|
||||||
// HASH_VALUE C1B7E33CDEF4085B
|
|
||||||
// INDEX 391
|
|
||||||
uiRenameFile [File umbenennen:]
|
|
||||||
|
|
||||||
// HASH_VALUE 8DB5533699858756
|
|
||||||
// INDEX 392
|
|
||||||
uiRenameErr [File kann nicht umbenannt werden :]
|
|
|
@ -1,191 +0,0 @@
|
||||||
// HASH_VALUE 6B09AC86E0363C89
|
|
||||||
// INDEX 0
|
|
||||||
LanguageName [English]
|
|
||||||
|
|
||||||
// HASH_VALUE 3259CCA76B39A0A8
|
|
||||||
// INDEX 1
|
|
||||||
TheSagaOfRyzom [Ryzom]
|
|
||||||
|
|
||||||
// HASH_VALUE C7CC3BE0464ED819
|
|
||||||
// INDEX 333
|
|
||||||
uiOnChecking [CHECKING FILES FOR PATCH...]
|
|
||||||
|
|
||||||
// HASH_VALUE 3DDF0D8BBD1D3C7A
|
|
||||||
// INDEX 348
|
|
||||||
uiErrCantPatch [Error: You cannot patch because the PatchURL isn't setup in database (error code 16).]
|
|
||||||
|
|
||||||
// HASH_VALUE E1B933F053557A69
|
|
||||||
// INDEX 349
|
|
||||||
uiNeedToPatch [Information: You need to patch to access to this shard.]
|
|
||||||
|
|
||||||
// HASH_VALUE 1CFD71DE1856F357
|
|
||||||
// INDEX 350
|
|
||||||
uiErrServerLost [Error: Lost server during patching.]
|
|
||||||
|
|
||||||
// HASH_VALUE 0781700FFA41B8F9
|
|
||||||
// INDEX 351
|
|
||||||
uiPatching [PATCHING PLEASE WAIT]
|
|
||||||
|
|
||||||
// HASH_VALUE B11FE4024EE3A1CB
|
|
||||||
// INDEX 352
|
|
||||||
uiErrPatchApply [Error: Patch process ended but the patch has not been successfully applied.]
|
|
||||||
|
|
||||||
// HASH_VALUE 428B3D2BDA3B2CD2
|
|
||||||
// INDEX 353
|
|
||||||
uiErrChecking [Error: Patch files failed - checking.]
|
|
||||||
|
|
||||||
// HASH_VALUE 40D0242C40D0242C
|
|
||||||
// INDEX 354
|
|
||||||
uiKb [KB]
|
|
||||||
|
|
||||||
// HASH_VALUE 4050243440502434
|
|
||||||
// INDEX 355
|
|
||||||
uiMb [MB]
|
|
||||||
|
|
||||||
// HASH_VALUE 9FA5A06DD895B637
|
|
||||||
// INDEX 356
|
|
||||||
uiLoginGetFile [Getting File:]
|
|
||||||
|
|
||||||
// HASH_VALUE 373988CC56A4B9DB
|
|
||||||
// INDEX 357
|
|
||||||
uiDLFailed [Download from emergency server failed, patching is aborted]
|
|
||||||
|
|
||||||
// HASH_VALUE 0DD314AEEB0A6833
|
|
||||||
// INDEX 358
|
|
||||||
uiDLURIFailed [Download from URI failed (will try again):]
|
|
||||||
|
|
||||||
// HASH_VALUE 9FEF11F92FE58883
|
|
||||||
// INDEX 359
|
|
||||||
uiNoMoreURI [No more patch URI, try emergency patch server]
|
|
||||||
|
|
||||||
// HASH_VALUE D126843FEAF6BF89
|
|
||||||
// INDEX 360
|
|
||||||
uiDLWithCurl [Downloading File With Curl:]
|
|
||||||
|
|
||||||
// HASH_VALUE 5DF5B8902957A38B
|
|
||||||
// INDEX 361
|
|
||||||
uiDecompressing [Decompressing File:]
|
|
||||||
|
|
||||||
// HASH_VALUE 5C24504228490833
|
|
||||||
// INDEX 362
|
|
||||||
uiCheckInt [Checking Integrity:]
|
|
||||||
|
|
||||||
// HASH_VALUE 4C08EC7AE63A3CA8
|
|
||||||
// INDEX 363
|
|
||||||
uiNoVersionFound [No Version Found]
|
|
||||||
|
|
||||||
// HASH_VALUE EA9BF07087F0DE5C
|
|
||||||
// INDEX 364
|
|
||||||
uiVersionFound [Version Found:]
|
|
||||||
|
|
||||||
// HASH_VALUE 6CBAA4C2CED054DA
|
|
||||||
// INDEX 365
|
|
||||||
uiApplyingDelta [Applying Delta:]
|
|
||||||
|
|
||||||
// HASH_VALUE 6BA9B484A5229440
|
|
||||||
// INDEX 366
|
|
||||||
uiClientVersion [Client Version]
|
|
||||||
|
|
||||||
// HASH_VALUE 2EAADC9D27B47047
|
|
||||||
// INDEX 367
|
|
||||||
uiServerVersion [Server Version]
|
|
||||||
|
|
||||||
// HASH_VALUE A8B6FC32E686BF9C
|
|
||||||
// INDEX 368
|
|
||||||
uiCheckingFile [Checking File]
|
|
||||||
|
|
||||||
// HASH_VALUE 6618CC5E4408BC94
|
|
||||||
// INDEX 369
|
|
||||||
uiNeededPatches [Required Patches:]
|
|
||||||
|
|
||||||
// HASH_VALUE 57D72C08D558C375
|
|
||||||
// INDEX 370
|
|
||||||
uiCheckInBNP [Checking inside BNP:]
|
|
||||||
|
|
||||||
// HASH_VALUE 8810F72436CBB610
|
|
||||||
// INDEX 371
|
|
||||||
uiSHA1Diff [Force BNP Unpacking: checksums do not correspond:]
|
|
||||||
|
|
||||||
// HASH_VALUE 0328885969AA93AC
|
|
||||||
// INDEX 372
|
|
||||||
uiCheckEndNoErr [Checking file ended with no errors]
|
|
||||||
|
|
||||||
// HASH_VALUE 9759642196BA93B6
|
|
||||||
// INDEX 373
|
|
||||||
uiCheckEndWithErr [Checking file ended with errors:]
|
|
||||||
|
|
||||||
// HASH_VALUE 03196C6669AA93A9
|
|
||||||
// INDEX 374
|
|
||||||
uiPatchEndNoErr [Patching file ended with no errors]
|
|
||||||
|
|
||||||
// HASH_VALUE E2A45B80D6C8F35E
|
|
||||||
// INDEX 375
|
|
||||||
uiPatchEndWithErr [Patch failed!]
|
|
||||||
|
|
||||||
// HASH_VALUE 97987345E8D46F43
|
|
||||||
// INDEX 376
|
|
||||||
uiPatchDiskFull [Disk full!]
|
|
||||||
|
|
||||||
// HASH_VALUE 67818F3F0F656F1B
|
|
||||||
// INDEX 377
|
|
||||||
uiPatchWriteError [Disk write error! (disk full?)]
|
|
||||||
|
|
||||||
// HASH_VALUE 54956061978AB897
|
|
||||||
// INDEX 378
|
|
||||||
uiProcessing [Processing file:]
|
|
||||||
|
|
||||||
// HASH_VALUE D183CC5E53E4E24A
|
|
||||||
// INDEX 379
|
|
||||||
uiUnpack [BNP Unpacking:]
|
|
||||||
|
|
||||||
// HASH_VALUE 57282453CE0D24A5
|
|
||||||
// INDEX 380
|
|
||||||
uiUnpackErrHead [Cannot read bnp header:]
|
|
||||||
|
|
||||||
// HASH_VALUE 3EC17830B80D1B1D
|
|
||||||
// INDEX 381
|
|
||||||
uiRebootConfirm [Ryzom will now relaunch. Please wait until Ryzom is fully restarted.]
|
|
||||||
|
|
||||||
// HASH_VALUE 809F582A06023625
|
|
||||||
// INDEX 382
|
|
||||||
uiRebootBut [CLICK HERE TO RELAUNCH]
|
|
||||||
|
|
||||||
// HASH_VALUE EA9888EBCAF59355
|
|
||||||
// INDEX 383
|
|
||||||
uiChangeDate [Changing the mod date:]
|
|
||||||
|
|
||||||
// HASH_VALUE 4589434CDD042E75
|
|
||||||
// INDEX 384
|
|
||||||
uiChgDateErr [Cannot change file time:]
|
|
||||||
|
|
||||||
// HASH_VALUE 5BCA0C0C45A99719
|
|
||||||
// INDEX 385
|
|
||||||
uiNowDate [Now the date is:]
|
|
||||||
|
|
||||||
// HASH_VALUE 485B4807F0581777
|
|
||||||
// INDEX 386
|
|
||||||
uiSetAttrib [Set file attributes:]
|
|
||||||
|
|
||||||
// HASH_VALUE 5EB5789353166D5E
|
|
||||||
// INDEX 387
|
|
||||||
uiAttribErr [Cannot have read/write access:]
|
|
||||||
|
|
||||||
// HASH_VALUE C2B6FF326665E080
|
|
||||||
// INDEX 388
|
|
||||||
uiDelFile [Delete file:]
|
|
||||||
|
|
||||||
// HASH_VALUE 0D262B3499A4A35A
|
|
||||||
// INDEX 389
|
|
||||||
uiDelErr [Cannot delete file:]
|
|
||||||
|
|
||||||
// HASH_VALUE C238BC781514042B
|
|
||||||
// INDEX 390
|
|
||||||
uiDelNoFile [Delete file (no file)]
|
|
||||||
|
|
||||||
// HASH_VALUE C1B7E33CDEF4085B
|
|
||||||
// INDEX 391
|
|
||||||
uiRenameFile [Rename File:]
|
|
||||||
|
|
||||||
// HASH_VALUE 8DB5533699858756
|
|
||||||
// INDEX 392
|
|
||||||
uiRenameErr [Cannot rename file:]
|
|
|
@ -1,191 +0,0 @@
|
||||||
// HASH_VALUE 6B09AC86E0363C89
|
|
||||||
// INDEX 0
|
|
||||||
LanguageName [Français]
|
|
||||||
|
|
||||||
// HASH_VALUE 3259CCA76B39A0A8
|
|
||||||
// INDEX 1
|
|
||||||
TheSagaOfRyzom [Ryzom]
|
|
||||||
|
|
||||||
// HASH_VALUE C7CC3BE0464ED819
|
|
||||||
// INDEX 333
|
|
||||||
uiOnChecking [EXAMINE LES FICHIERS A PATCHER...]
|
|
||||||
|
|
||||||
// HASH_VALUE 3DDF0D8BBD1D3C7A
|
|
||||||
// INDEX 348
|
|
||||||
uiErrCantPatch [Erreur : Vous ne pouvez pas patcher car l'URL des mises à jour n'est pas configurée dans la base de données (erreur code 16).]
|
|
||||||
|
|
||||||
// HASH_VALUE E1B933F053557A69
|
|
||||||
// INDEX 349
|
|
||||||
uiNeedToPatch [Information : Vous devez installer les mises à jour pour accéder à ce shard.]
|
|
||||||
|
|
||||||
// HASH_VALUE 1CFD71DE1856F357
|
|
||||||
// INDEX 350
|
|
||||||
uiErrServerLost [Erreur : Perte du serveur durant la mise à jour de Ryzom.]
|
|
||||||
|
|
||||||
// HASH_VALUE 0781700FFA41B8F9
|
|
||||||
// INDEX 351
|
|
||||||
uiPatching [MISE A JOUR EN COURS, VEUILLEZ PATIENTER]
|
|
||||||
|
|
||||||
// HASH_VALUE B11FE4024EE3A1CB
|
|
||||||
// INDEX 352
|
|
||||||
uiErrPatchApply [Erreur : le processus de mises à jour est terminé mais les patchs n'ont pas pu être installés correctement.]
|
|
||||||
|
|
||||||
// HASH_VALUE 428B3D2BDA3B2CD2
|
|
||||||
// INDEX 353
|
|
||||||
uiErrChecking [Erreur : Echec des fichiers de mises à jour - vérification.]
|
|
||||||
|
|
||||||
// HASH_VALUE 40D0242C40D0242C
|
|
||||||
// INDEX 354
|
|
||||||
uiKb [Ko]
|
|
||||||
|
|
||||||
// HASH_VALUE 4050243440502434
|
|
||||||
// INDEX 355
|
|
||||||
uiMb [Mo]
|
|
||||||
|
|
||||||
// HASH_VALUE 9FA5A06DD895B637
|
|
||||||
// INDEX 356
|
|
||||||
uiLoginGetFile [Récupération du fichier :]
|
|
||||||
|
|
||||||
// HASH_VALUE 373988CC56A4B9DB
|
|
||||||
// INDEX 357
|
|
||||||
uiDLFailed [Echec téléchargement à partir du serveur d'urgence, processus de patchs avorté]
|
|
||||||
|
|
||||||
// HASH_VALUE 0DD314AEEB0A6833
|
|
||||||
// INDEX 358
|
|
||||||
uiDLURIFailed [Echec téléchargement à partir d'URI (nouvel essai) :]
|
|
||||||
|
|
||||||
// HASH_VALUE 9FEF11F92FE58883
|
|
||||||
// INDEX 359
|
|
||||||
uiNoMoreURI [Plus de patchs URI, essayez le serveur d'urgence]
|
|
||||||
|
|
||||||
// HASH_VALUE D126843FEAF6BF89
|
|
||||||
// INDEX 360
|
|
||||||
uiDLWithCurl [Téléchargement des fichiers via Curl:]
|
|
||||||
|
|
||||||
// HASH_VALUE 5DF5B8902957A38B
|
|
||||||
// INDEX 361
|
|
||||||
uiDecompressing [Décompression du fichier :]
|
|
||||||
|
|
||||||
// HASH_VALUE 5C24504228490833
|
|
||||||
// INDEX 362
|
|
||||||
uiCheckInt [Vérification de l'intégrité :]
|
|
||||||
|
|
||||||
// HASH_VALUE 4C08EC7AE63A3CA8
|
|
||||||
// INDEX 363
|
|
||||||
uiNoVersionFound [Pas de Version trouvée]
|
|
||||||
|
|
||||||
// HASH_VALUE EA9BF07087F0DE5C
|
|
||||||
// INDEX 364
|
|
||||||
uiVersionFound [Version trouvée :]
|
|
||||||
|
|
||||||
// HASH_VALUE 6CBAA4C2CED054DA
|
|
||||||
// INDEX 365
|
|
||||||
uiApplyingDelta [Application du Delta :]
|
|
||||||
|
|
||||||
// HASH_VALUE 6BA9B484A5229440
|
|
||||||
// INDEX 366
|
|
||||||
uiClientVersion [Version du Client]
|
|
||||||
|
|
||||||
// HASH_VALUE 2EAADC9D27B47047
|
|
||||||
// INDEX 367
|
|
||||||
uiServerVersion [Version du Serveur]
|
|
||||||
|
|
||||||
// HASH_VALUE A8B6FC32E686BF9C
|
|
||||||
// INDEX 368
|
|
||||||
uiCheckingFile [Vérification du fichier]
|
|
||||||
|
|
||||||
// HASH_VALUE 6618CC5E4408BC94
|
|
||||||
// INDEX 369
|
|
||||||
uiNeededPatches [Patchs nécessaires :]
|
|
||||||
|
|
||||||
// HASH_VALUE 57D72C08D558C375
|
|
||||||
// INDEX 370
|
|
||||||
uiCheckInBNP [Vérification du BNP :]
|
|
||||||
|
|
||||||
// HASH_VALUE 8810F72436CBB610
|
|
||||||
// INDEX 371
|
|
||||||
uiSHA1Diff [Force BNP Analysée : SHA1 ne correspond pas :]
|
|
||||||
|
|
||||||
// HASH_VALUE 0328885969AA93AC
|
|
||||||
// INDEX 372
|
|
||||||
uiCheckEndNoErr [Fin de vérification du fichier - Pas d'erreur]
|
|
||||||
|
|
||||||
// HASH_VALUE 9759642196BA93B6
|
|
||||||
// INDEX 373
|
|
||||||
uiCheckEndWithErr [Fin de vérification du fichier - Erreur(s) :]
|
|
||||||
|
|
||||||
// HASH_VALUE 03196C6669AA93A9
|
|
||||||
// INDEX 374
|
|
||||||
uiPatchEndNoErr [Fichier de patch terminé - Pas d'erreur]
|
|
||||||
|
|
||||||
// HASH_VALUE E2A45B80D6C8F35E
|
|
||||||
// INDEX 375
|
|
||||||
uiPatchEndWithErr [Echec de la mise à jour !]
|
|
||||||
|
|
||||||
// HASH_VALUE 97987345E8D46F43
|
|
||||||
// INDEX 376
|
|
||||||
uiPatchDiskFull [Disque plein !]
|
|
||||||
|
|
||||||
// HASH_VALUE 67818F3F0F656F1B
|
|
||||||
// INDEX 377
|
|
||||||
uiPatchWriteError [Erreur d'écriture ! (disque plein ?)]
|
|
||||||
|
|
||||||
// HASH_VALUE 54956061978AB897
|
|
||||||
// INDEX 378
|
|
||||||
uiProcessing [Traîtement des fichiers :]
|
|
||||||
|
|
||||||
// HASH_VALUE D183CC5E53E4E24A
|
|
||||||
// INDEX 379
|
|
||||||
uiUnpack [Décompression BNP :]
|
|
||||||
|
|
||||||
// HASH_VALUE 57282453CE0D24A5
|
|
||||||
// INDEX 380
|
|
||||||
uiUnpackErrHead [Impossible de lire l'en-tête bnp :]
|
|
||||||
|
|
||||||
// HASH_VALUE 3EC17830B80D1B1D
|
|
||||||
// INDEX 381
|
|
||||||
uiRebootConfirm [Ryzom va être redémarré. Attendez que le jeu soit totalement relancé SVP.]
|
|
||||||
|
|
||||||
// HASH_VALUE 809F582A06023625
|
|
||||||
// INDEX 382
|
|
||||||
uiRebootBut [CLIQUEZ ICI POUR REDEMARRER]
|
|
||||||
|
|
||||||
// HASH_VALUE EA9888EBCAF59355
|
|
||||||
// INDEX 383
|
|
||||||
uiChangeDate [Changement du mode date :]
|
|
||||||
|
|
||||||
// HASH_VALUE 4589434CDD042E75
|
|
||||||
// INDEX 384
|
|
||||||
uiChgDateErr [Impossible de modifier le fichier heure :]
|
|
||||||
|
|
||||||
// HASH_VALUE 5BCA0C0C45A99719
|
|
||||||
// INDEX 385
|
|
||||||
uiNowDate [La date est :]
|
|
||||||
|
|
||||||
// HASH_VALUE 485B4807F0581777
|
|
||||||
// INDEX 386
|
|
||||||
uiSetAttrib [Réglages attributs du fichier :]
|
|
||||||
|
|
||||||
// HASH_VALUE 5EB5789353166D5E
|
|
||||||
// INDEX 387
|
|
||||||
uiAttribErr [Impossible d'obtenir l'accès lire/écrire :]
|
|
||||||
|
|
||||||
// HASH_VALUE C2B6FF326665E080
|
|
||||||
// INDEX 388
|
|
||||||
uiDelFile [Suppression du fichier :]
|
|
||||||
|
|
||||||
// HASH_VALUE 0D262B3499A4A35A
|
|
||||||
// INDEX 389
|
|
||||||
uiDelErr [Impossible de supprimer le fichier :]
|
|
||||||
|
|
||||||
// HASH_VALUE C238BC781514042B
|
|
||||||
// INDEX 390
|
|
||||||
uiDelNoFile [Suppression du fichier (pas de fichier)]
|
|
||||||
|
|
||||||
// HASH_VALUE C1B7E33CDEF4085B
|
|
||||||
// INDEX 391
|
|
||||||
uiRenameFile [Attribution d'un nouveau nom au fichier :]
|
|
||||||
|
|
||||||
// HASH_VALUE 8DB5533699858756
|
|
||||||
// INDEX 392
|
|
||||||
uiRenameErr [Impossible de renommer le fichier :]
|
|
|
@ -1,191 +0,0 @@
|
||||||
// HASH_VALUE 6B09AC86E0363C89
|
|
||||||
// INDEX 0
|
|
||||||
LanguageName [Русский]
|
|
||||||
|
|
||||||
// HASH_VALUE 3259CCA76B39A0A8
|
|
||||||
// INDEX 1
|
|
||||||
TheSagaOfRyzom [Ризом]
|
|
||||||
|
|
||||||
// HASH_VALUE C7CC3BE0464ED819
|
|
||||||
// INDEX 333
|
|
||||||
uiOnChecking [ПРОВЕРКА ФАЙЛОВ ИГРЫ...]
|
|
||||||
|
|
||||||
// HASH_VALUE 3DDF0D8BBD1D3C7A
|
|
||||||
// INDEX 348
|
|
||||||
uiErrCantPatch [Ошибка : Патч невозможен, поскольку адрес получения патча не установлен (error code 16).]
|
|
||||||
|
|
||||||
// HASH_VALUE E1B933F053557A69
|
|
||||||
// INDEX 349
|
|
||||||
uiNeedToPatch [Информация : Для подключения к этому серверу необходим патч.]
|
|
||||||
|
|
||||||
// HASH_VALUE 1CFD71DE1856F357
|
|
||||||
// INDEX 350
|
|
||||||
uiErrServerLost [Ошибка : Потеря связи с сервером во время патча.]
|
|
||||||
|
|
||||||
// HASH_VALUE 0781700FFA41B8F9
|
|
||||||
// INDEX 351
|
|
||||||
uiPatching [ПАТЧ В ПРОЦЕССЕ... ПОДОЖДИТЕ]
|
|
||||||
|
|
||||||
// HASH_VALUE B11FE4024EE3A1CB
|
|
||||||
// INDEX 352
|
|
||||||
uiErrPatchApply [Ошибка : Процесс скачивания патча завершился, но патч невозможен.]
|
|
||||||
|
|
||||||
// HASH_VALUE 428B3D2BDA3B2CD2
|
|
||||||
// INDEX 353
|
|
||||||
uiErrChecking [Ошибка : Файлы патча не соответствуют необходимым - идет проверка...]
|
|
||||||
|
|
||||||
// HASH_VALUE 40D0242C40D0242C
|
|
||||||
// INDEX 354
|
|
||||||
uiKb [КБ]
|
|
||||||
|
|
||||||
// HASH_VALUE 4050243440502434
|
|
||||||
// INDEX 355
|
|
||||||
uiMb [МБ]
|
|
||||||
|
|
||||||
// HASH_VALUE 9FA5A06DD895B637
|
|
||||||
// INDEX 356
|
|
||||||
uiLoginGetFile [Получение файла :]
|
|
||||||
|
|
||||||
// HASH_VALUE 373988CC56A4B9DB
|
|
||||||
// INDEX 357
|
|
||||||
uiDLFailed [Скачивание с экстренного сервера невозможно, патч не может быть завершен]
|
|
||||||
|
|
||||||
// HASH_VALUE 0DD314AEEB0A6833
|
|
||||||
// INDEX 358
|
|
||||||
uiDLURIFailed [Скачивание по указанному адресу невозможно (попытки возобновятся позже) :]
|
|
||||||
|
|
||||||
// HASH_VALUE 9FEF11F92FE58883
|
|
||||||
// INDEX 359
|
|
||||||
uiNoMoreURI [Адрес для скачивания патча недействителен, подключитесь к экстренному серверу]
|
|
||||||
|
|
||||||
// HASH_VALUE D126843FEAF6BF89
|
|
||||||
// INDEX 360
|
|
||||||
uiDLWithCurl [Скачивание файла :]
|
|
||||||
|
|
||||||
// HASH_VALUE 5DF5B8902957A38B
|
|
||||||
// INDEX 361
|
|
||||||
uiDecompressing [Распаковка файла :]
|
|
||||||
|
|
||||||
// HASH_VALUE 5C24504228490833
|
|
||||||
// INDEX 362
|
|
||||||
uiCheckInt [Проверка файла :]
|
|
||||||
|
|
||||||
// HASH_VALUE 4C08EC7AE63A3CA8
|
|
||||||
// INDEX 363
|
|
||||||
uiNoVersionFound [Версия не обнаружена]
|
|
||||||
|
|
||||||
// HASH_VALUE EA9BF07087F0DE5C
|
|
||||||
// INDEX 364
|
|
||||||
uiVersionFound [Обнаружена версия :]
|
|
||||||
|
|
||||||
// HASH_VALUE 6CBAA4C2CED054DA
|
|
||||||
// INDEX 365
|
|
||||||
uiApplyingDelta [Применяется Дельта :]
|
|
||||||
|
|
||||||
// HASH_VALUE 6BA9B484A5229440
|
|
||||||
// INDEX 366
|
|
||||||
uiClientVersion [Версия клиента]
|
|
||||||
|
|
||||||
// HASH_VALUE 2EAADC9D27B47047
|
|
||||||
// INDEX 367
|
|
||||||
uiServerVersion [Версия сервера]
|
|
||||||
|
|
||||||
// HASH_VALUE A8B6FC32E686BF9C
|
|
||||||
// INDEX 368
|
|
||||||
uiCheckingFile [Проверка файла]
|
|
||||||
|
|
||||||
// HASH_VALUE 6618CC5E4408BC94
|
|
||||||
// INDEX 369
|
|
||||||
uiNeededPatches [Необходимые патчи :]
|
|
||||||
|
|
||||||
// HASH_VALUE 57D72C08D558C375
|
|
||||||
// INDEX 370
|
|
||||||
uiCheckInBNP [Проверка BNP :]
|
|
||||||
|
|
||||||
// HASH_VALUE 8810F72436CBB610
|
|
||||||
// INDEX 371
|
|
||||||
uiSHA1Diff [Форсировать распаковку BNP : контрольные суммы не совпадают :]
|
|
||||||
|
|
||||||
// HASH_VALUE 0328885969AA93AC
|
|
||||||
// INDEX 372
|
|
||||||
uiCheckEndNoErr [Проверка файла не выявила ошибок]
|
|
||||||
|
|
||||||
// HASH_VALUE 9759642196BA93B6
|
|
||||||
// INDEX 373
|
|
||||||
uiCheckEndWithErr [Проверка файла выявила ошибки :]
|
|
||||||
|
|
||||||
// HASH_VALUE 03196C6669AA93A9
|
|
||||||
// INDEX 374
|
|
||||||
uiPatchEndNoErr [Патч осуществлен без ошибок]
|
|
||||||
|
|
||||||
// HASH_VALUE E2A45B80D6C8F35E
|
|
||||||
// INDEX 375
|
|
||||||
uiPatchEndWithErr [Патч невозможен!]
|
|
||||||
|
|
||||||
// HASH_VALUE 97987345E8D46F43
|
|
||||||
// INDEX 376
|
|
||||||
uiPatchDiskFull [Диск переполнен!]
|
|
||||||
|
|
||||||
// HASH_VALUE 67818F3F0F656F1B
|
|
||||||
// INDEX 377
|
|
||||||
uiPatchWriteError [Ошибка записи! (диск переполнен ?)]
|
|
||||||
|
|
||||||
// HASH_VALUE 54956061978AB897
|
|
||||||
// INDEX 378
|
|
||||||
uiProcessing [Обработка файла :]
|
|
||||||
|
|
||||||
// HASH_VALUE D183CC5E53E4E24A
|
|
||||||
// INDEX 379
|
|
||||||
uiUnpack [Распаковка BNP :]
|
|
||||||
|
|
||||||
// HASH_VALUE 57282453CE0D24A5
|
|
||||||
// INDEX 380
|
|
||||||
uiUnpackErrHead [Невозможно прочесть заголовок BNP :]
|
|
||||||
|
|
||||||
// HASH_VALUE 3EC17830B80D1B1D
|
|
||||||
// INDEX 381
|
|
||||||
uiRebootConfirm [Ризом будет перезапущен. Пожалуйста, подождите...]
|
|
||||||
|
|
||||||
// HASH_VALUE 809F582A06023625
|
|
||||||
// INDEX 382
|
|
||||||
uiRebootBut [ПЕРЕЗАПУСТИТЬ ИГРУ]
|
|
||||||
|
|
||||||
// HASH_VALUE EA9888EBCAF59355
|
|
||||||
// INDEX 383
|
|
||||||
uiChangeDate [Перезапись даты изменений :]
|
|
||||||
|
|
||||||
// HASH_VALUE 4589434CDD042E75
|
|
||||||
// INDEX 384
|
|
||||||
uiChgDateErr [Невозможно изменить время файла :]
|
|
||||||
|
|
||||||
// HASH_VALUE 5BCA0C0C45A99719
|
|
||||||
// INDEX 385
|
|
||||||
uiNowDate [Новая дата :]
|
|
||||||
|
|
||||||
// HASH_VALUE 485B4807F0581777
|
|
||||||
// INDEX 386
|
|
||||||
uiSetAttrib [Установить свойства файла :]
|
|
||||||
|
|
||||||
// HASH_VALUE 5EB5789353166D5E
|
|
||||||
// INDEX 387
|
|
||||||
uiAttribErr [Невозможно получить доступ к чтению/записи :]
|
|
||||||
|
|
||||||
// HASH_VALUE C2B6FF326665E080
|
|
||||||
// INDEX 388
|
|
||||||
uiDelFile [Удалить файл :]
|
|
||||||
|
|
||||||
// HASH_VALUE 0D262B3499A4A35A
|
|
||||||
// INDEX 389
|
|
||||||
uiDelErr [Невозможно удалить файл :]
|
|
||||||
|
|
||||||
// HASH_VALUE C238BC781514042B
|
|
||||||
// INDEX 390
|
|
||||||
uiDelNoFile [Удалить файл (файл отсутствует)]
|
|
||||||
|
|
||||||
// HASH_VALUE C1B7E33CDEF4085B
|
|
||||||
// INDEX 391
|
|
||||||
uiRenameFile [Переименовать файл :]
|
|
||||||
|
|
||||||
// HASH_VALUE 8DB5533699858756
|
|
||||||
// INDEX 392
|
|
||||||
uiRenameErr [Невозможно переименовать файл :]
|
|
|
@ -1,468 +0,0 @@
|
||||||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
|
||||||
// Copyright (C) 2010 Winch Gate Property Limited
|
|
||||||
//
|
|
||||||
// This program is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU Affero General Public License as
|
|
||||||
// published by the Free Software Foundation, either version 3 of the
|
|
||||||
// License, or (at your option) any later version.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU Affero General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
//
|
|
||||||
// Includes
|
|
||||||
//
|
|
||||||
|
|
||||||
#include "stdpch.h"
|
|
||||||
#include "login_patch.h"
|
|
||||||
|
|
||||||
#define RZ_USE_SEVENZIP 1
|
|
||||||
#define RZ_USE_NEW_LZMA
|
|
||||||
|
|
||||||
#ifdef RZ_USE_SEVENZIP
|
|
||||||
|
|
||||||
#ifdef RZ_USE_NEW_LZMA
|
|
||||||
|
|
||||||
#include "seven_zip/7z.h"
|
|
||||||
#include "seven_zip/7zAlloc.h"
|
|
||||||
#include "seven_zip/7zBuf.h"
|
|
||||||
#include "seven_zip/7zCrc.h"
|
|
||||||
#include "seven_zip/7zFile.h"
|
|
||||||
#include "seven_zip/7zVersion.h"
|
|
||||||
#include "seven_zip/LzmaDec.h"
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#include "seven_zip/7zCrc.h"
|
|
||||||
#include "seven_zip/7zIn.h"
|
|
||||||
#include "seven_zip/7zExtract.h"
|
|
||||||
#include "seven_zip/LzmaDecode.h"
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//
|
|
||||||
// Namespaces
|
|
||||||
//
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
using namespace NLMISC;
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef RZ_USE_NEW_LZMA
|
|
||||||
|
|
||||||
/// Input stream class for 7zip archive
|
|
||||||
class CNel7ZipInStream : public ISeekInStream
|
|
||||||
{
|
|
||||||
NLMISC::IStream *_Stream;
|
|
||||||
|
|
||||||
public:
|
|
||||||
/// Constructor, only allow file stream because 7zip will 'seek' in the stream
|
|
||||||
CNel7ZipInStream(NLMISC::IStream *s)
|
|
||||||
: _Stream(s)
|
|
||||||
{
|
|
||||||
Read = readFunc;
|
|
||||||
Seek = seekFunc;
|
|
||||||
}
|
|
||||||
|
|
||||||
// the read function called by 7zip to read data
|
|
||||||
static SRes readFunc(void *object, void *buffer, size_t *size)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CNel7ZipInStream *me = (CNel7ZipInStream*)object;
|
|
||||||
uint len = (uint)*size;
|
|
||||||
me->_Stream->serialBuffer((uint8*)buffer, len);
|
|
||||||
return SZ_OK;
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
return SZ_ERROR_READ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// the seek function called by seven zip to seek inside stream
|
|
||||||
static SRes seekFunc(void *object, Int64 *pos, ESzSeek origin)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CNel7ZipInStream *me = (CNel7ZipInStream*)object;
|
|
||||||
sint32 offset = (sint32)*pos;
|
|
||||||
bool ret = me->_Stream->seek(offset, (NLMISC::IStream::TSeekOrigin)origin);
|
|
||||||
|
|
||||||
if (ret)
|
|
||||||
{
|
|
||||||
*pos = (Int64)me->_Stream->getPos();
|
|
||||||
return SZ_OK;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
return SZ_ERROR_READ;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
/// Input stream class for 7zip archive
|
|
||||||
class CNel7ZipInStream : public _ISzInStream
|
|
||||||
{
|
|
||||||
NLMISC::IStream *_Stream;
|
|
||||||
|
|
||||||
public:
|
|
||||||
/// Constructor, only allow file stream because 7zip will 'seek' in the stream
|
|
||||||
CNel7ZipInStream(NLMISC::IStream *s)
|
|
||||||
: _Stream(s)
|
|
||||||
{
|
|
||||||
Read = readFunc;
|
|
||||||
Seek = seekFunc;
|
|
||||||
}
|
|
||||||
|
|
||||||
// the read function called by 7zip to read data
|
|
||||||
static SZ_RESULT readFunc(void *object, void *buffer, size_t size, size_t *processedSize)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CNel7ZipInStream *me = (CNel7ZipInStream*)object;
|
|
||||||
me->_Stream->serialBuffer((uint8*)buffer, (uint)size);
|
|
||||||
*processedSize = size;
|
|
||||||
return SZ_OK;
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
return SZE_FAIL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// the seek function called by seven zip to seek inside stream
|
|
||||||
static SZ_RESULT seekFunc(void *object, CFileSize pos)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CNel7ZipInStream *me = (CNel7ZipInStream*)object;
|
|
||||||
bool ret= me->_Stream->seek(pos, NLMISC::IStream::begin);
|
|
||||||
if (ret)
|
|
||||||
return SZ_OK;
|
|
||||||
else
|
|
||||||
return SZE_FAIL;
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
return SZE_FAIL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool CPatchManager::unpack7Zip(const std::string &sevenZipFile, const std::string &destFileName)
|
|
||||||
{
|
|
||||||
#ifdef RZ_USE_SEVENZIP
|
|
||||||
nlinfo("Uncompressing 7zip archive '%s' to '%s'", sevenZipFile.c_str(), destFileName.c_str());
|
|
||||||
|
|
||||||
// init seven zip
|
|
||||||
ISzAlloc allocImp;
|
|
||||||
allocImp.Alloc = SzAlloc;
|
|
||||||
allocImp.Free = SzFree;
|
|
||||||
|
|
||||||
ISzAlloc allocTempImp;
|
|
||||||
allocTempImp.Alloc = SzAllocTemp;
|
|
||||||
allocTempImp.Free = SzFreeTemp;
|
|
||||||
|
|
||||||
// wrap file in a CIFile
|
|
||||||
CIFile input(sevenZipFile);
|
|
||||||
CNel7ZipInStream inStr(&input);
|
|
||||||
|
|
||||||
#ifdef RZ_USE_NEW_LZMA
|
|
||||||
|
|
||||||
CLookToRead lookStream;
|
|
||||||
lookStream.realStream = &inStr;
|
|
||||||
LookToRead_CreateVTable(&lookStream, False);
|
|
||||||
LookToRead_Init(&lookStream);
|
|
||||||
|
|
||||||
CrcGenerateTable();
|
|
||||||
|
|
||||||
CSzArEx db;
|
|
||||||
SzArEx_Init(&db);
|
|
||||||
|
|
||||||
// unpack the file using the 7zip API
|
|
||||||
SRes res = SzArEx_Open(&db, &lookStream.s, &allocImp, &allocTempImp);
|
|
||||||
|
|
||||||
if (res != SZ_OK)
|
|
||||||
{
|
|
||||||
nlerror("Failed to open archive file %s", sevenZipFile.c_str());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (db.NumFiles != 1)
|
|
||||||
{
|
|
||||||
nlerror("Seven zip archive with more than 1 file are unsupported");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
UInt32 blockIndex = 0xFFFFFFFF; /* it can have any value before first call (if outBuffer = 0) */
|
|
||||||
Byte *outBuffer = 0; /* it must be 0 before first call for each new archive. */
|
|
||||||
size_t outBufferSize = 0; /* it can have any value before first call (if outBuffer = 0) */
|
|
||||||
|
|
||||||
size_t offset;
|
|
||||||
size_t outSizeProcessed = 0;
|
|
||||||
|
|
||||||
// get the first file
|
|
||||||
res = SzArEx_Extract(&db, &lookStream.s, 0,
|
|
||||||
&blockIndex, &outBuffer, &outBufferSize,
|
|
||||||
&offset, &outSizeProcessed,
|
|
||||||
&allocImp, &allocTempImp);
|
|
||||||
|
|
||||||
// get the length of first file
|
|
||||||
size_t nameLen = SzArEx_GetFileNameUtf16(&db, 0, NULL);
|
|
||||||
|
|
||||||
ucstring filename;
|
|
||||||
filename.resize(nameLen);
|
|
||||||
|
|
||||||
// write filename into ucstring
|
|
||||||
SzArEx_GetFileNameUtf16(&db, 0, &filename[0]);
|
|
||||||
|
|
||||||
// write the extracted file
|
|
||||||
FILE *outputHandle = fopen(destFileName.c_str(), "wb+");
|
|
||||||
|
|
||||||
if (outputHandle == 0)
|
|
||||||
{
|
|
||||||
nlerror("Can not open output file '%s'", destFileName.c_str());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
UInt32 processedSize = (UInt32)fwrite(outBuffer + offset, 1, outSizeProcessed, outputHandle);
|
|
||||||
|
|
||||||
if (processedSize != outSizeProcessed)
|
|
||||||
{
|
|
||||||
nlerror("Failed to write %u char to output file '%s'", outSizeProcessed-processedSize, destFileName.c_str());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(outputHandle);
|
|
||||||
|
|
||||||
IAlloc_Free(&allocImp, outBuffer);
|
|
||||||
|
|
||||||
// free 7z context
|
|
||||||
SzArEx_Free(&db, &allocImp);
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
InitCrcTable();
|
|
||||||
|
|
||||||
CArchiveDatabaseEx db;
|
|
||||||
SzArDbExInit(&db);
|
|
||||||
|
|
||||||
// unpack the file using the 7zip API
|
|
||||||
SZ_RESULT res = SzArchiveOpen(&inStr, &db, &allocImp, &allocTempImp);
|
|
||||||
|
|
||||||
if (res != SZ_OK)
|
|
||||||
{
|
|
||||||
nlerror("Failed to open archive file %s", sevenZipFile.c_str());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (db.Database.NumFiles != 1)
|
|
||||||
{
|
|
||||||
nlerror("Seven zip archive with more than 1 file are unsupported");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
UInt32 blockIndex = 0xFFFFFFFF; /* it can have any value before first call (if outBuffer = 0) */
|
|
||||||
Byte *outBuffer = 0; /* it must be 0 before first call for each new archive. */
|
|
||||||
size_t outBufferSize = 0; /* it can have any value before first call (if outBuffer = 0) */
|
|
||||||
|
|
||||||
size_t offset = 0;
|
|
||||||
size_t outSizeProcessed = 0;
|
|
||||||
|
|
||||||
// get the first file
|
|
||||||
res = SzExtract(&inStr, &db, 0,
|
|
||||||
&blockIndex, &outBuffer, &outBufferSize,
|
|
||||||
&offset, &outSizeProcessed,
|
|
||||||
&allocImp, &allocTempImp);
|
|
||||||
|
|
||||||
// write the extracted file
|
|
||||||
FILE *outputHandle = fopen(destFileName.c_str(), "wb+");
|
|
||||||
|
|
||||||
if (outputHandle == 0)
|
|
||||||
{
|
|
||||||
nlerror("Can not open output file '%s'", destFileName.c_str());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
UInt32 processedSize = (UInt32)fwrite(outBuffer + offset, 1, outSizeProcessed, outputHandle);
|
|
||||||
|
|
||||||
if (processedSize != outSizeProcessed)
|
|
||||||
{
|
|
||||||
nlerror("Failed to write %u char to output file '%s'", outSizeProcessed-processedSize, destFileName.c_str());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(outputHandle);
|
|
||||||
allocImp.Free(outBuffer);
|
|
||||||
|
|
||||||
// free 7z context
|
|
||||||
SzArDbExFree(&db, allocImp.Free);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// ok, all is fine, file is unpacked
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CPatchManager::unpackLZMA(const std::string &lzmaFile, const std::string &destFileName)
|
|
||||||
{
|
|
||||||
#ifdef RZ_USE_SEVENZIP
|
|
||||||
nldebug("unpackLZMA : decompression the lzma file '%s' into output file '%s", lzmaFile.c_str(), destFileName.c_str());
|
|
||||||
|
|
||||||
CIFile inStream(lzmaFile);
|
|
||||||
uint32 inSize = inStream.getFileSize();
|
|
||||||
|
|
||||||
#ifdef RZ_USE_NEW_LZMA
|
|
||||||
|
|
||||||
if (inSize < LZMA_PROPS_SIZE + 8)
|
|
||||||
{
|
|
||||||
nlwarning("Invalid file size, too small file '%s'", lzmaFile.c_str());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// read the compressed file in buffer
|
|
||||||
auto_ptr<uint8> inBuffer = auto_ptr<uint8>(new uint8[inSize]);
|
|
||||||
inStream.serialBuffer(inBuffer.get(), inSize);
|
|
||||||
|
|
||||||
uint8 *pos = inBuffer.get();
|
|
||||||
|
|
||||||
pos += LZMA_PROPS_SIZE;
|
|
||||||
|
|
||||||
// read the output file size
|
|
||||||
size_t fileSize = 0;
|
|
||||||
|
|
||||||
for (int i = 0; i < 8; ++i)
|
|
||||||
{
|
|
||||||
if (pos >= inBuffer.get()+inSize)
|
|
||||||
{
|
|
||||||
nlassert(false);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
fileSize |= ((UInt64)*pos++) << (8 * i);
|
|
||||||
}
|
|
||||||
|
|
||||||
// allocators
|
|
||||||
ISzAlloc allocImp;
|
|
||||||
allocImp.Alloc = SzAlloc;
|
|
||||||
allocImp.Free = SzFree;
|
|
||||||
|
|
||||||
CLzmaDec state;
|
|
||||||
LzmaDec_Construct(&state);
|
|
||||||
|
|
||||||
// allocate and decode props and probs
|
|
||||||
SRes res = LzmaDec_Allocate(&state, inBuffer.get(), LZMA_PROPS_SIZE, &allocImp);
|
|
||||||
|
|
||||||
if (res != 0)
|
|
||||||
{
|
|
||||||
nlwarning("Failed to decode lzma properies in file '%s'!", lzmaFile.c_str());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// allocate the output buffer
|
|
||||||
auto_ptr<uint8> outBuffer = auto_ptr<uint8>(new uint8[fileSize]);
|
|
||||||
|
|
||||||
// in and out file sizes
|
|
||||||
SizeT outProcessed = fileSize;
|
|
||||||
SizeT inProcessed = (SizeT)(inSize-(pos-inBuffer.get()));
|
|
||||||
|
|
||||||
LzmaDec_Init(&state);
|
|
||||||
|
|
||||||
// decompress the file in memory
|
|
||||||
ELzmaStatus status;
|
|
||||||
res = LzmaDec_DecodeToBuf(&state, (Byte*)outBuffer.get(), &outProcessed, (Byte*)pos, &inProcessed, LZMA_FINISH_ANY, &status);
|
|
||||||
|
|
||||||
// free memory
|
|
||||||
LzmaDec_Free(&state, &allocImp);
|
|
||||||
|
|
||||||
if (res != 0 || outProcessed != fileSize)
|
|
||||||
{
|
|
||||||
nlwarning("Failed to decode lzma file '%s' with status %d", lzmaFile.c_str(), (sint)status);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
auto_ptr<uint8> inBuffer = auto_ptr<uint8>(new uint8[inSize]);
|
|
||||||
inStream.serialBuffer(inBuffer.get(), inSize);
|
|
||||||
|
|
||||||
CLzmaDecoderState state;
|
|
||||||
|
|
||||||
uint8 *pos = inBuffer.get();
|
|
||||||
|
|
||||||
// read the lzma properties
|
|
||||||
int res = LzmaDecodeProperties(&state.Properties, (unsigned char*) pos, LZMA_PROPERTIES_SIZE);
|
|
||||||
if (res != 0)
|
|
||||||
{
|
|
||||||
nlwarning("Failed to decode lzma properies in file '%s'!", lzmaFile.c_str());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (inSize < LZMA_PROPERTIES_SIZE + 8)
|
|
||||||
{
|
|
||||||
nlwarning("Invalid file size, too small file '%s'", lzmaFile.c_str());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// alloc the probs, making sure they are deleted in function exit
|
|
||||||
size_t nbProb = LzmaGetNumProbs(&state.Properties);
|
|
||||||
auto_ptr<CProb> probs = auto_ptr<CProb>(new CProb[nbProb]);
|
|
||||||
state.Probs = probs.get();
|
|
||||||
|
|
||||||
pos += LZMA_PROPERTIES_SIZE;
|
|
||||||
|
|
||||||
// read the output file size
|
|
||||||
size_t fileSize = 0;
|
|
||||||
for (int i = 0; i < 8; i++)
|
|
||||||
{
|
|
||||||
if (pos >= inBuffer.get()+inSize)
|
|
||||||
{
|
|
||||||
nlassert(false);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
fileSize |= ((UInt64)*pos++) << (8 * i);
|
|
||||||
}
|
|
||||||
|
|
||||||
SizeT outProcessed = 0;
|
|
||||||
SizeT inProcessed = 0;
|
|
||||||
|
|
||||||
// allocate the output buffer
|
|
||||||
auto_ptr<uint8> outBuffer = auto_ptr<uint8>(new uint8[fileSize]);
|
|
||||||
|
|
||||||
// decompress the file in memory
|
|
||||||
res = LzmaDecode(&state, (unsigned char*) pos, (SizeT)(inSize-(pos-inBuffer.get())), &inProcessed, (unsigned char*)outBuffer.get(), (SizeT)fileSize, &outProcessed);
|
|
||||||
|
|
||||||
if (res != 0 || outProcessed != fileSize)
|
|
||||||
{
|
|
||||||
nlwarning("Failed to decode lzma file '%s'", lzmaFile.c_str());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// store on output buffer
|
|
||||||
COFile outStream(destFileName);
|
|
||||||
outStream.serialBuffer(outBuffer.get(), (uint)fileSize);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
Loading…
Reference in a new issue