|
#1
|
||||
|
||||
|
IS7zEx - Advanced 7-Zip Extraction API for Inno Setup
====================================== Code:
> Overview: IS7zEx is a high-performance extraction library meticulously crafted for Inno Setup. It provides a robust interface for handling 7z archives, offering advanced progress tracking, multi-part archive support, and precise extraction metrics that standard tools often lack. > Specifications: - Version : v0.1 - Author : BLACKFIRE69 - Build : 6997A400 - Compatibility : Inno Setup v6.0 or later (Required) - License : Proprietary (See LICENSE file for details) - Tested Engine : 7-Zip v26.00 (Latest) Code:
> Key Features: - Flexible Extraction Modes: Full support for Normal archives and Splitted (.001, .002) archives. - Advanced Progress Tracking: Real-time metrics for Overall Progress, Current Disk Progress, and Extracted/Total File Counts. - Performance Metrics: Accurate Current and Average Speed (MB/s). - Time Management: Intelligent "Time Remaining" and "Elapsed Time" tracking with three customizable display formats. - Process Control: Built-in functions to Suspend, Resume, or Stop the extraction process safely. - UI Stability: Includes "Calc Accuracy" reduction logic to prevent erratic jumping in speed and ETA displays. - Localization: Easily switch between languages using external .ini configuration files. Code:
> Important - Split Archive Handling: Unlike the RAR format, the 7-Zip API requires split parts to be merged before extraction can begin. IS7zEx handles this by creating a local temporary file. - Single Directory: If all parts (.001, .002...) are in one folder, detection is automatic. - Multiple Directories: If parts are spread across different disks (nested structure), use IS7zExSetSplitPartCount to manualy define the total part count. - Temporary Path: You can override the temp file location using IS7zExSetSplitTmpPath if the destination drive lacks sufficient space for both the temp file and extracted data. Code:
> Supported File Structures: [ROOT] ├── data1.7z ├── Disks/ │ ├── Disk1/ │ │ ├── Sonic 2.7z.001 │ │ └── Sonic 2.7z.002 │ └── Disk2/ │ ├── Sonic 2.7z.003 │ └── Sonic 2.7z.004 ├── data3.7z └── Setup.exe > Distribution Files: - IS7zEx.dll Core API Library. - 7z_32.dll 7-Zip engine integration. - IS7zEx.iss Header for Inno Setup. - English.ini / Russian.ini Language configuration files. * Example 1: Normal Archives Code:
{Code]
#include "IS7zEx.iss"
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
{ - ADDING DISKS - }
repeat
if not AddArchiveEntry('data1.7z') then Break;
if not AddArchiveEntry('data2.7z') then Break;
if not AddArchiveEntry('data3.7z') then Break;
until true;
{ - INITIALIZE & EXTRACT - }
if IS7zExInitEx(2, @ProgressCallbackEx) then
begin
repeat
for i := 1 to IS7zExDiskCount do
begin
if not IS7zExExtract(i) then Break;
end;
until true;
IS7zExStop;
end;
end;
end;
Code:
{Code]
#include "IS7zEx.iss"
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
{ - ADDING DISKS - }
repeat
if not AddArchiveEntry('data1.7z') then Break;
// All parts (.001, .002, etc.) are in the same directory.
// Detection is automatic.
if not AddArchiveEntry('Sonic 2.7z.001') then Break;
if not AddArchiveEntry('data3.7z') then Break;
until true;
{ - INITIALIZE & EXTRACT - }
if IS7zExInitEx(2, @ProgressCallbackEx) then
begin
repeat
for i := 1 to IS7zExDiskCount do
begin
if not IS7zExExtract(i) then Break;
end;
until true;
IS7zExStop;
end;
end;
end;
Code:
{Code]
#include "IS7zEx.iss"
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
{ - ADDING DISKS - }
repeat
if not AddArchiveEntry('data1.7z') then Break;
if not AddArchiveEntry('Sonic2.7z.001') then
Break
else
begin
// Required for split parts spread across multiple directories
IS7zExSetSplitPartCount(IS7zExDiskCount, 10);
// Set custom temp path if disk space is limited
IS7zExSetSplitTmpPath(IS7zExDiskCount, ExpandConstant('{src}'));
end;
if not AddArchiveEntry('data3.7z') then Break;
until true;
{ - INITIALIZE & EXTRACT - }
if IS7zExInitEx(2, @ProgressCallbackEx) then
begin
repeat
for i := 1 to IS7zExDiskCount do
begin
if not IS7zExExtract(i) then Break;
end;
until true;
IS7zExStop;
end;
end;
end;
Last edited by BLACKFIRE69; 19-04-2026 at 15:28. |
| The Following 6 Users Say Thank You to BLACKFIRE69 For This Useful Post: | ||
audiofeel (08-04-2026), Cesar82 (08-04-2026), Dunnowho69 (08-04-2026), Ele (14-04-2026), Razor12911 (09-04-2026), ScOOt3r (19-04-2026) | ||
| Sponsored Links |
|
#2
|
||||
|
||||
|
Hello BLACKFIRE69.
It's great that you're back. I've been a little absent from the forum. I'm looking forward to testing your new libraries. Would it be possible for you to provide a version with unpacking functions for ARC, RAR, and 7-Zip in the same library? And also a way to apply XDelta or HDIFF patches with progress, like the IsDone library does? I also wanted to report a possible bug in XHashEx.dll. XHashEx doesn't generate the hash for hidden or system files (I think all files should be generated since it's possible to compress them). Perhaps two extra parameters to include or exclude each type. |
|
#3
|
||||
|
||||
|
Quote:
![]() Thanks for reporting this! Ill look into it. |
|
#4
|
||||
|
||||
|
IS7zEx v0.1 Update 01 (LibOnly)
* Bug fixes only. No API changes. Code:
- Fixed: `IS7zExReduceCalcAccuracy` did not perform as expected in v0.1 due to an internal architectural change introduced in this version. This has been corrected and the function now behaves as intended again. - Fixed: `IS7zExCallbackInterval` silently ignored some values, causing progress updates to appear sluggish or unresponsive regardless of the configured interval. The valid input range has been restored. - Fixed: State inconsistency where accuracy reduction settings could behave unpredictably across multiple init calls in the same session. Code:
- Drop-in library replacement. No script-side changes required. Last edited by BLACKFIRE69; 19-04-2026 at 16:07. |
![]() |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| ISRarEx - Advanced RAR Extraction API for Inno Setup | BLACKFIRE69 | Conversion Tutorials | 2 | 26-04-2026 10:58 |
| BlackBox v2 | y_thelastknight | Conversion Tutorials | 567 | 11-03-2025 07:16 |
| Advanced installer or inno setup | demon964 | Conversion Tutorials | 0 | 12-11-2024 04:28 |
| Useful Dll for Inno Setup users | peterf1999 | Conversion Tutorials | 88 | 01-12-2017 16:00 |
| Converter Lite for Advanced Setup Creator | Razor12911 | Conversion Tutorials | 3 | 11-01-2017 09:54 |