So after making a deep analysis of .ipak files (texture container files), I got all the needed info to make an IPAK extractor. I have also decided to make the extracting process in a managed c++ dll, so you can use it too if you want. By the way, you need to have a minimum of 256MB of RAM in your computer.
A preview of my tool:
- V2.4 Library documention (skip this if you're not a programmer):
This library has 3 functions:
- ExtractFiles extracts all files from the specified ipak
- ExtractFileID extracts the file with the specified ID from the specified ipak
- GetFileCount tells you how many files are there in an ipak
- If realExtract is true, then padding and pre-headers in an iwi file are skipped (recommended to get original iwi file)
- If skipFilePadding is true, then padding INSIDE the file is deleted, only valid when realExtract is true
- If decrypt is true, then the iwi files get decrypted and decompressed to get valid editable iwi's, only valid when realExtract is true
- If showConsole is true, then when the extraction process starts a console pops up with progress information
- If sleepAtFinish is true, then the console sleeps 1 second when it finished extracting
The library can also return error codes, which are the following:
- Version log:
- v2: Initial release
- v2.3: Fixed segmented files bug; added new parameter to functions; released source
- v2.31: Added GetLastError call when extraction fails; extractor now deletes padding inside file
- v2.4: Added decompression feature
- v2.5: Improved extracting speed; added IWI and DDS extraction options; added type of texture extraction options
- v2.51: Added sagethumbs support
- v2.60: Updated the IWI and DDS conversion functions to my last version; fixed a bug related about volume maps; now the dll files are merged in the main executable (only one file); added donate button
- FAQ:
Q: Why am I getting "The application has failed to start because the side by side configuration is incorrect"?
A: Download this and install it in your Windows http://www.microsoft.com/en-us/download/...px?id=5555
- Tips:
I have some tips for you, if you're a texture modder:
- Use http://code.google.com/p/sagethumbs/downloads/list for much easier dds files view ( http://i.imgur.com/qTQLk.png )
- Download:
ipak_extractor_v260.rar (Size: 187.29 KB / Downloads: 1,870)
A preview of my tool:
- V2.4 Library documention (skip this if you're not a programmer):
This library has 3 functions:
Code:
static int ExtractFiles(System::IntPtr ipakDirectoryPtr, System::IntPtr extractDirectoryPtr, bool realExtract, bool skipFilePadding, bool decrypt, bool sleepAtFinish);
static int ExtractFileID(System::IntPtr ipakDirectoryPtr, DWORD fileID, System::IntPtr extractDirectoryPtr, bool realExtract, bool skipFilePadding, bool decrypt, bool showConsole, bool sleepAtFinish);
static int GetFileCount(System::IntPtr ipakDirectoryPtr);
- ExtractFiles extracts all files from the specified ipak
- ExtractFileID extracts the file with the specified ID from the specified ipak
- GetFileCount tells you how many files are there in an ipak
- If realExtract is true, then padding and pre-headers in an iwi file are skipped (recommended to get original iwi file)
- If skipFilePadding is true, then padding INSIDE the file is deleted, only valid when realExtract is true
- If decrypt is true, then the iwi files get decrypted and decompressed to get valid editable iwi's, only valid when realExtract is true
- If showConsole is true, then when the extraction process starts a console pops up with progress information
- If sleepAtFinish is true, then the console sleeps 1 second when it finished extracting
The library can also return error codes, which are the following:
Code:
#define SUCCESS 0x00000001 // success
#define ERROR_LOW_FILESIZE 0xFFFFFFF0 // if size of ipak is lower than 16 bytes
#define ERROR_WRONG_IDENTIFIER 0xFFFFFFF1 // ipak has wrong identifier
#define ERROR_WRONG_FILESIZE 0xFFFFFFF2 // ipak has wrong filesize
#define ERROR_NULLINFO_INFO_SECTION 0xFFFFFFF3 // ipak has null info about info section
#define ERROR_START_FILEMAP_FAILED 0xFFFFFFF4 // MapViewOfFile() failed
#define ERROR_NULLINFO_DATA_SECTION 0xFFFFFFF5 // ipak has null info about data section
#define ERROR_INFO_SECTION_TOO_BIG 0xFFFFFFF6 // if info section > 256mb
#define ERROR_IPAK_FILESIZE_TOO_BIG 0xFFFFFFF7 // if a file from ipak > 16mb
#define ERROR_IPAKFILE_NOTFOUND 0xFFFFFFF8 // ipak file not found
#define ERROR_FILEID_NOTFOUND 0xFFFFFFF9 // only when using ExtractFileID(), it cant find specified file
#define ERROR_CANT_CREATE_HANDLE_1 0xFFFFFFFA
#define ERROR_CANT_CREATE_HANDLE_2 0xFFFFFFFB
#define ERROR_CANT_ALLOC_TO_DECRYPT 0xFFFFFFFC
- Version log:
- v2: Initial release
- v2.3: Fixed segmented files bug; added new parameter to functions; released source
- v2.31: Added GetLastError call when extraction fails; extractor now deletes padding inside file
- v2.4: Added decompression feature
- v2.5: Improved extracting speed; added IWI and DDS extraction options; added type of texture extraction options
- v2.51: Added sagethumbs support
- v2.60: Updated the IWI and DDS conversion functions to my last version; fixed a bug related about volume maps; now the dll files are merged in the main executable (only one file); added donate button
- FAQ:
Q: Why am I getting "The application has failed to start because the side by side configuration is incorrect"?
A: Download this and install it in your Windows http://www.microsoft.com/en-us/download/...px?id=5555
- Tips:
I have some tips for you, if you're a texture modder:
- Use http://code.google.com/p/sagethumbs/downloads/list for much easier dds files view ( http://i.imgur.com/qTQLk.png )
- Download:
ipak_extractor_v260.rar (Size: 187.29 KB / Downloads: 1,870)