| BLACKFIRE69 |
08-04-2026 14:42 |
ISRarEx - Advanced RAR Extraction API for Inno Setup
7 Attachment(s)
ISRarEx - Advanced RAR Extraction API for Inno Setup
======================================
Code:
> Overview:
ISRarEx is a high-performance extraction library meticulously crafted
for Inno Setup. It provides a robust interface for handling RAR
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 : WinRAR v7.20 (Latest)
Code:
> Key Features:
- Flexible Extraction Modes: Full support for Normal archives,
Splitted (multi-volume) archives, and Combined sets.
- 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:
> Supported File Structures:
ISRarEx supports complex distribution layouts, including nested
volumes and mixed archive types:
[ROOT]
├── data1.rar
├── Disks/
│ ├── Disk1/
│ │ ├── Sonic 2.part01.rar
│ │ └── Sonic 2.part02.rar
│ └── Disk2/
│ ├── Sonic 2.part03.rar
│ └── Sonic 2.part04.rar
├── data3.rar
└── Setup.exe
> Distribution Files:
- ISRarEx.dll — Core API Library.
- UnRAR_32.dll — UnRAR engine integration.
- ISRarEx.iss — Header for Inno Setup.
- English.ini / Russian.ini — Language configuration files.
- Quick Start Examples -
* Example 1: Normal Archives
Code:
{Code]
#include "ISRarEx.iss"
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
{ - ADDING DISKS - }
repeat
if not AddArchiveEntry('data1.rar') then Break;
if not AddArchiveEntry('data2.rar') then Break;
if not AddArchiveEntry('data3.rar') then Break;
until true;
{ - INITIALIZE & EXTRACT - }
if ISRarExInitEx(2, @ProgressCallbackEx) then
begin
repeat
for i := 1 to ISRarExDiskCount do
begin
if not ISRarExExtract(i) then Break;
end;
until true;
ISRarExStop;
end;
end;
end;
* Example 2: Normal + Splitted Archives
Code:
{Code]
#include "ISRarEx.iss"
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
{ - ADDING DISKS - }
repeat
if not AddArchiveEntry('data1.rar') then Break;
if not AddArchiveEntry('Sonic 2.part01.rar') then Break;
if not AddArchiveEntry('data3.rar') then Break;
until true;
{ - INITIALIZE & EXTRACT - }
if ISRarExInitEx(2, @ProgressCallbackEx) then
begin
repeat
for i := 1 to ISRarExDiskCount do
begin
if not ISRarExExtract(i) then Break;
end;
until true;
ISRarExStop;
end;
end;
end;
.
|