Jump to content

Recommended Posts

  • Honorable Member

This is a reworked version of the PackMakerLite fully rewritten in Rust.

This is the hidden content, please

In the download folder you'll both find the portable zip and the setup. The context menu extension association will be done automatically in the setup.

.png

It includes both the console version (-cli) and the gui version (-gui). The bats can be used to register custom extensions.

.png

packmakerlite-cli:

Spoiler

.png

.png

 

packmakerlite-gui:

Spoiler

.png

 

.png
 

.png

 

 

Right now it supports all the features PackMakerLite v3 supports (multithreading, PackMakerLite.json, etc), except pack type 3-4-5-6. I started this project just yesterday.

 

Changelog

v0.1.0
- recreated -cli version
- created -gui version
- implemented type 0-1-2

v0.2.0
- implemented type 6 xtea(snappy)

v0.3.0
- implemented output_directory_path & hybrid_candidate_discovery options
- extended --list with filename_crc and data_crc
- improved icon resolution

v0.4.0
- Added global Recent Workspaces support for the GUI

v0.5.0
- Added CLI archive search: `--search <WORKSPACE_DIR> <FILENAME_OR_PATTERN>`.
- Added GUI `Search`.

v0.6.0
- Added installer PATH integration prompt to optionally add `packmakerlite-cli` to PATH.
- Added portable/user utility scripts:
- `Register-Path-Env.bat`
- `Unregister-Path-Env.bat`

v0.7.0
- Added GUI `Check Duplicates` button to scan the workspace archives and show all the duplicates in a dedicated window
- Added CLI command: `--check-duplicates <WORKSPACE_DIR>`.

v0.8.0
- Faster packing with lower memory overhead, especially on large workspaces.
- New Index-priority duplicate analysis (`--read-index` in CLI + GUI toggle). It reads Index (both old and new formats supported) from either the workspace or from the output folder.
- Better duplicate list window UX: winner/duplicate status in green / red colors, hide winners checkbox, better filtered copy output result via button, and added label "Effective duplicate bytes".

v1.0.0
- Added --info command: archive summary with file count, type distribution, sizes, and compression ratio.
- Added --verify command: CRC32 integrity check per entry without extracting files.
- Added --filter for selective unpack: glob-pattern matching (e.g. --filter "*.py", --filter "icon/*").
- Added atomic write for pack operations: writes to temporary files first, renames on success, cleans up on failure.
- Switched unpack and verify to streaming I/O: per-entry seek+read instead of loading entire archive into memory.
- Added --diff command: compare two archives showing added/removed/modified/unchanged entries.
- Added --dry-run for pack: preview file count and type distribution without writing.
- Added -q/--quiet flag: suppresses all output except errors.
- Added --json output mode for --list, --info, --verify, and --diff commands.
- Added --migrate command: re-encode archive entries to a different pack type (e.g. --migrate root --to-type 2).
- Added --watch command: monitors source folder and auto-repacks on file changes.

v1.1.0
- Significantly faster unpack, verify, and migrate operations — archives are now memory-mapped instead of reading file-by-file
- Faster pack operations with reduced memory allocations
- Removed console progress counter during unpack that was causing slowdowns on CLI
- Fixed filter patterns with backslashes not matching correctly
- Smaller release binaries
- Internal code cleanup and consolidation

v1.2.0
- New --verify-crc flag: validates each file's CRC32 integrity during unpack, stopping on any mismatch
- GUI drag-and-drop: drag a folder or .eix file into the app to quickly pack/unpack or load its workspace

v1.3.0
- Added --force-index-type to select index encoding (EPKD / MCOZ / MCSP)
- EPKD - plain, unencrypted (useful for debugging)
- MCOZ - encrypted with LZO (this is the default one, same as before)
- MCSP - encrypted with Snappy
- Added --force-data-type alias for --forcetype
- Added index_type setting to PackMakerLite.json { "index_type": "epkd" }
- Added "Index encoding" dropdown to GUI config panel
- --migrate now respects index type setting
- Faster --migrate, --verify-crc, and --diff

v1.4.0
- Fixed a security issue where a specially crafted archive could extract files outside the intended folder. Unpack now blocks this automatically.
- Added 26 new automated tests covering more pack types, migration, search filtering, archive comparison, and error handling.

 

Edited by martysama0134
  • Metin2 Dev 133
  • kekw 3
  • Eyes 3
  • Flame 5
  • Good 43
  • muscle 3
  • Love 5
  • Love 92
Link to comment
https://metin2.dev/topic/34350-eterpack-archiver-packmakerlite-rs-new-2026/
Share on other sites

  • Honorable Member

v0.2.0

  • implemented type 6 xtea(snappy)

v0.3.0

  • implemented output_directory_path & hybrid_candidate_discovery options
  • extended --list with filename_crc and data_crc
  • improved icon resolution
Spoiler

.png

.png

 

 

  • Good 1
  • Love 2
  • Honorable Member

v0.6.0

  • Added installer PATH integration prompt to optionally add `packmakerlite-cli` to PATH.
  • Added portable/user utility scripts:
    • `Register-Path-Env.bat`
    • `Unregister-Path-Env.bat`
  • Metin2 Dev 1
  • Love 1
  • Honorable Member

 

v0.7.0

  • Added GUI `Check Duplicates` button to scan the workspace archives and show all the duplicates in a dedicated window
  • Added CLI command: `--check-duplicates <WORKSPACE_DIR>`.
Spoiler

.png

 

  • kekw 1
  • Love 3
  • Honorable Member

v0.8.0

  • Faster packing with lower memory overhead, especially on large workspaces.
  • New Index-priority duplicate analysis (`--read-index` in CLI + GUI toggle). It reads Index (both old and new formats supported) from either the workspace or from the output folder.
  • Better duplicate list window UX: winner/duplicate status in green / red colors, hide winners checkbox, better filtered copy output result via button, and added label "Effective duplicate bytes".
Spoiler

.png

.png

.png


 

 

  • Metin2 Dev 2
  • Love 1
  • 2 weeks later...
  • Honorable Member
Posted (edited)
14 hours ago, eddR said:

edit: shouldn't the duplicate checker, use some sort of match rate?

There are a lot of identical files, especially .sub files. The duplicate check is only meant to detect files with the same path across different packs. This is also why I require the pack\Index loading to determine their order. (top packs have priority, shadowing the rest)

Edited by martysama0134
  • Honorable Member

v1.0.0

  • Added --info command: archive summary with file count, type distribution, sizes, and compression ratio.
  • Added --verify command: CRC32 integrity check per entry without extracting files.
  • Added --filter for selective unpack: glob-pattern matching (e.g. --filter "*.py", --filter "icon/*").
  • Added atomic write for pack operations: writes to temporary files first, renames on success, cleans up on failure.
  • Switched unpack and verify to streaming I/O: per-entry seek+read instead of loading entire archive into memory.
  • Added --diff command: compare two archives showing added/removed/modified/unchanged entries.
  • Added --dry-run for pack: preview file count and type distribution without writing.
  • Added -q/--quiet flag: suppresses all output except errors.
  • Added --json output mode for --list, --info, --verify, and --diff commands.
  • Added --migrate command: re-encode archive entries to a different pack type (e.g. --migrate root --to-type 2).
  • Added --watch command: monitors source folder and auto-repacks on file changes.
  • Honorable Member

v1.1.0

  • Significantly faster unpack, verify, and migrate operations — archives are now memory-mapped instead of reading file-by-file
  • Faster pack operations with reduced memory allocations
  • Removed console progress counter during unpack that was causing slowdowns on CLI
  • Fixed filter patterns with backslashes not matching correctly
  • Smaller release binaries
  • Internal code cleanup and consolidation
     
  • Honorable Member
Posted (edited)

PackMakerLite-RS v1.2.0

  • New --verify-crc flag: validates each file's CRC32 integrity during unpack, stopping on any mismatch
  • GUI drag-and-drop: drag a folder or .eix file into the app to quickly pack/unpack or load its workspace

.png


 

Edited by martysama0134
  • Metin2 Dev 1
  • Honorable Member
Posted (edited)

v1.3.0

  • Added --force-index-type to select index encoding (EPKD / MCOZ / MCSP)
    • EPKD - plain, unencrypted (useful for debugging)
    • MCOZ - encrypted with LZO (this is the default one, same as before)
    • MCSP - encrypted with Snappy
  • Added --force-data-type alias for --forcetype
  • Added index_type setting to PackMakerLite.json
    •  
      { "index_type": "epkd" }
  • Added "Index encoding" dropdown to GUI config panel
  • --migrate now respects index type setting
  • Faster --migrate, --verify-crc, and --diff

 

Edited by martysama0134
  • Metin2 Dev 1
  • Love 1
  • Honorable Member

v1.4.0

  • Fixed a security issue where a specially crafted archive could extract files outside the intended folder. Unpack now blocks this automatically.
  • Added 26 new automated tests covering more pack types, migration, search filtering, archive comparison, and error handling.
  • Metin2 Dev 1
  • Honorable Member

PackMakerLite-RS v1.5.0

  • Added --cat <PACK_NAME> <FILENAME>: extract a single file from an archive to stdout without unpacking to disk
  • Added --deduplicate <WORKSPACE_DIR>: remove duplicate files from archives using Index priority ordering; repacks in memory without decode/re-encode
  • Added --install-skill: register the PackMakerLite AI agent skill for Claude Code and Codex CLI; use --install-skill local for per-project install
  • Added --json output for --pack, --unpack, --migrate, --search, and --check-duplicates; all operations now support --json
  • Changed GUI pack type dropdown now shows compression labels: 0 (Store), 1 (LZO), 2 (LZO+XTEA), 6 (Snappy+XTEA)

 

The skill will let you use the packmakerlite-cli in an efficient agentic way.

.png

  • Metin2 Dev 2
  • Think 1
  • Love 2
On 6/27/2020 at 1:55 PM, MEHOK said:

M2 Download Center

 

Hidden Content

  • Give reaction to this post to see the hidden content.
( Internal )

 

  Reveal hidden contents

15380715932579216911.jpg
15380715932579219228.jpg
153807159325792170982.jpg
153807159325792174383.jpg
153807159325792178564.jpg
153807159325792181535.jpg
153807159325792184616.jpg
153807159325792189167.jpg
153807159325792194969.jpg
153807159325815191791.jpg
153826159325815197582.jpg
153826159325815201463.jpg
153826159325815204354.jpg
153826159325815210555.jpg
153826159325815214146.jpg
1538261593257922006910.jpg

 

 

On 2/19/2026 at 3:07 AM, martysama0134 said:

This is a reworked version of the PackMakerLite fully rewritten in Rust.

Hidden Content

  • Give reaction to this post to see the hidden content.

 

In the download folder you'll both find the portable zip and the setup. The context menu extension association will be done automatically in the setup.

.png

It includes both the console version (-cli) and the gui version (-gui). The bats can be used to register custom extensions.

.png

packmakerlite-cli:

  Hide contents

.png

.png

 

packmakerlite-gui:

  Hide contents

.png

 

.png
 

.png

 

 

Right now it supports all the features PackMakerLite v3 supports (multithreading, PackMakerLite.json, etc), except pack type 3-4-5-6. I started this project just yesterday.

 

Changelog

v0.1.0
- recreated -cli version
- created -gui version
- implemented type 0-1-2

v0.2.0
- implemented type 6 xtea(snappy)

v0.3.0
- implemented output_directory_path & hybrid_candidate_discovery options
- extended --list with filename_crc and data_crc
- improved icon resolution

v0.4.0
- Added global Recent Workspaces support for the GUI

v0.5.0
- Added CLI archive search: `--search <WORKSPACE_DIR> <FILENAME_OR_PATTERN>`.
- Added GUI `Search`.

v0.6.0
- Added installer PATH integration prompt to optionally add `packmakerlite-cli` to PATH.
- Added portable/user utility scripts:
- `Register-Path-Env.bat`
- `Unregister-Path-Env.bat`

v0.7.0
- Added GUI `Check Duplicates` button to scan the workspace archives and show all the duplicates in a dedicated window
- Added CLI command: `--check-duplicates <WORKSPACE_DIR>`.

v0.8.0
- Faster packing with lower memory overhead, especially on large workspaces.
- New Index-priority duplicate analysis (`--read-index` in CLI + GUI toggle). It reads Index (both old and new formats supported) from either the workspace or from the output folder.
- Better duplicate list window UX: winner/duplicate status in green / red colors, hide winners checkbox, better filtered copy output result via button, and added label "Effective duplicate bytes".

v1.0.0
- Added --info command: archive summary with file count, type distribution, sizes, and compression ratio.
- Added --verify command: CRC32 integrity check per entry without extracting files.
- Added --filter for selective unpack: glob-pattern matching (e.g. --filter "*.py", --filter "icon/*").
- Added atomic write for pack operations: writes to temporary files first, renames on success, cleans up on failure.
- Switched unpack and verify to streaming I/O: per-entry seek+read instead of loading entire archive into memory.
- Added --diff command: compare two archives showing added/removed/modified/unchanged entries.
- Added --dry-run for pack: preview file count and type distribution without writing.
- Added -q/--quiet flag: suppresses all output except errors.
- Added --json output mode for --list, --info, --verify, and --diff commands.
- Added --migrate command: re-encode archive entries to a different pack type (e.g. --migrate root --to-type 2).
- Added --watch command: monitors source folder and auto-repacks on file changes.

v1.1.0
- Significantly faster unpack, verify, and migrate operations — archives are now memory-mapped instead of reading file-by-file
- Faster pack operations with reduced memory allocations
- Removed console progress counter during unpack that was causing slowdowns on CLI
- Fixed filter patterns with backslashes not matching correctly
- Smaller release binaries
- Internal code cleanup and consolidation

v1.2.0
- New --verify-crc flag: validates each file's CRC32 integrity during unpack, stopping on any mismatch
- GUI drag-and-drop: drag a folder or .eix file into the app to quickly pack/unpack or load its workspace

v1.3.0
- Added --force-index-type to select index encoding (EPKD / MCOZ / MCSP)
- EPKD - plain, unencrypted (useful for debugging)
- MCOZ - encrypted with LZO (this is the default one, same as before)
- MCSP - encrypted with Snappy
- Added --force-data-type alias for --forcetype
- Added index_type setting to PackMakerLite.json { "index_type": "epkd" }
- Added "Index encoding" dropdown to GUI config panel
- --migrate now respects index type setting
- Faster --migrate, --verify-crc, and --diff

v1.4.0
- Fixed a security issue where a specially crafted archive could extract files outside the intended folder. Unpack now blocks this automatically.
- Added 26 new automated tests covering more pack types, migration, search filtering, archive comparison, and error handling.

 

 

On 19.02.2026 at 05:07, martysama0134 said:

Bu , Rust dilinde tamamen yeniden yazılmış PackMakerLite'ın yeniden düzenlenmiş bir sürümüdür .

Gizli İçerik

  • Gizli içeriği görmek için bu gönderiye tepki verin.

 

İndirilen klasörde hem taşınabilir zip dosyasını hem de kurulum dosyasını bulacaksınız. Bağlam menüsü uzantısı ilişkilendirmesi kurulum sırasında otomatik olarak yapılacaktır.

.png

Bu, hem konsol sürümünü (-cli) hem de grafik arayüz sürümünü (-gui) içerir. Bat dosyaları, özel uzantıları kaydetmek için kullanılabilir.

.png

packmakerlite-cli:

  Gizli içeriği göster

.png

.png

 

packmakerlite-gui:

  İçeriği gizle

.png

 

.png
 

.png

 

 

Şu anda PackMakerLite v3'ün desteklediği tüm özellikleri (çoklu iş parçacığı, PackMakerLite.json, vb.) destekliyor, ancak 3-4-5-6 paket türlerini desteklemiyor. Bu projeye daha dün başladım.

 

Değişiklik Günlüğü













 

 

supperrr

Is this normal? I changed my system language to English, and it was like this. I changed it to Korean, and it's still the same.

'rs' displays it very differently. The old Packmakerlite and Eternexus also extract files differently from one another. The character encoding here causes issues when trying to repack archives that were unpacked with a different tool.

I feel like there should be a common encoding standard. The packs shared at https://metin2.dev/topic/15649-official-unpacked-updates-metin2-no-spam/page/6/#comments seem to output filenames using Eternexus's encoding method (Windows-1252), apparently regardless of our system's language. Packmakerlite, on the other hand, outputs in Windows-1254, which I'm guessing relies on my system's language.

Because of all this, I'm having a really hard time properly repacking the property pack.


spacer.png

spacer.png

spacer.png

Edited by AltanOzkan
  • Honorable Member
4 hours ago, AltanOzkan said:

Is this normal? I changed my system language to English, and it was like this. I changed it to Korean, and it's still the same.

'rs' displays it very differently. The old Packmakerlite and Eternexus also extract files differently from one another. The character encoding here causes issues when trying to repack archives that were unpacked with a different tool.

I feel like there should be a common encoding standard. The packs shared at https://metin2.dev/topic/15649-official-unpacked-updates-metin2-no-spam/page/6/#comments seem to output filenames using Eternexus's encoding method (Windows-1252), apparently regardless of our system's language. Packmakerlite, on the other hand, outputs in Windows-1254, which I'm guessing relies on my system's language.

Because of all this, I'm having a really hard time properly repacking the property pack.


spacer.png

spacer.png

spacer.png

I'm going to compare it, and solve it.

i.e. the property pack can have any folders/files renamed with any name you wish. The launcher walks through each path "blindly" and reads only the content of each .prb .prd .pre .pra.

  • Love 1
3 hours ago, martysama0134 said:

I'm going to compare it, and solve it.

i.e. the property pack can have any folders/files renamed with any name you wish. The launcher walks through each path "blindly" and reads only the content of each .prb .prd .pre .pra.

Oh, I didn't know that. I've run into situations before where certain things wouldn't show up in-game due to a badly repacked property pack. I assumed that was the reason, so I ended up just using the unpacked files from the official server instead. Thank you for the information and your reply!

Edited by AltanOzkan
  • Honorable Member
On 4/13/2026 at 6:14 AM, AltanOzkan said:

Is this normal? I changed my system language to English, and it was like this. I changed it to Korean, and it's still the same.

Spoiler

'rs' displays it very differently. The old Packmakerlite and Eternexus also extract files differently from one another. The character encoding here causes issues when trying to repack archives that were unpacked with a different tool.

I feel like there should be a common encoding standard. The packs shared at https://metin2.dev/topic/15649-official-unpacked-updates-metin2-no-spam/page/6/#comments seem to output filenames using Eternexus's encoding method (Windows-1252), apparently regardless of our system's language. Packmakerlite, on the other hand, outputs in Windows-1254, which I'm guessing relies on my system's language.

Because of all this, I'm having a really hard time properly repacking the property pack.


spacer.png

spacer.png

spacer.png

 

V1.6.0

  • Fixed korean filenames by converting them to latin 1252 ascii characters and not utf8 junk
  • Love 1
  • Love 5
  • 2 months later...
On 19.02.2026 at 4:07, martysama0134 said:

Aceasta este o versiune reelaborată a PackMakerLite , complet rescrisă în Rust.

Conținut ascuns

  • Dă un reacție la această postare pentru a vedea conținutul ascuns.

 

În folderul de descărcare veți găsi atât fișierul zip portabil, cât și fișierul de instalare. Asocierea extensiei din meniul contextual se va face automat în timpul instalării.

.png

Include atât versiunea de consolă (-cli), cât și versiunea grafică (-gui). Liliecii pot fi folosiți pentru a înregistra extensii personalizate.

.png

packmakerlite-cli:

  Ascunde conținutul

.png

.png

 

packmakerlite-gui:

  Dezvăluie conținut ascuns

.png

 

.png
 

.png

 

 

În prezent, acceptă toate funcționalitățile suportate de PackMakerLite v3 (multithreading, PackMakerLite.json etc.), cu excepția tipului de pachet 3-4-5-6. Am început acest proiect chiar ieri.

 

Jurnal de modificări













 

da functioneaza si la root??

On 19.02.2026 at 4:07, martysama0134 said:

Aceasta este o versiune reelaborată a PackMakerLite , complet rescrisă în Rust.

Conținut ascuns

  • Dă un reacție la această postare pentru a vedea conținutul ascuns.

 

În folderul de descărcare veți găsi atât fișierul zip portabil, cât și fișierul de instalare. Asocierea extensiei din meniul contextual se va face automat în timpul instalării.

.png

Include atât versiunea de consolă (-cli), cât și versiunea grafică (-gui). Liliecii pot fi folosiți pentru a înregistra extensii personalizate.

.png

packmakerlite-cli:

  Dezvăluie conținut ascuns

.png

.png

 

packmakerlite-gui:

  Dezvăluie conținut ascuns

.png

 

.png
 

.png

 

 

În prezent, acceptă toate funcționalitățile suportate de PackMakerLite v3 (multithreading, PackMakerLite.json etc.), cu excepția tipului de pachet 3-4-5-6. Am început acest proiect chiar ieri.

 

Jurnal de modificări













 

 

Spoiler

bravo

 

🥰

undei link de download?

undei link de download????

  • 2 months later...

Don't use any images from : imgur, turkmmop, freakgamers, inforge, hizliresim... Or your content will be deleted without notice...
Use : https://metin2.download/media/add/

Please use https://metin2.download/ when uploading files smaller than 100MB, otherwise the approval will take longer due to manual upload.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.