DLL ISRarEx - Advanced RAR Extraction API for Inno Setup

BLACKFIRE69

Новичок
ISRarEx - Advanced RAR Extraction API for Inno Setup
===================================================

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 are often lacking.

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)

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

Supported File Structures:

ISRarEx supports complex distribution layouts, including nested volumes and mixed archive types:

Форматирование (BB-код):
[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

Форматирование (BB-код):
{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

Форматирование (BB-код):
{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 ;

1.png
2.png
3.png
4.png
5.png
 

Вложения

Последнее редактирование:
ISRarEx v0.1 — Update 01 (LibOnly)

Bug fixes only. No API changes.

Fixed Issues:

ISRarExReduceCalcAccuracy 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.

ISRarExCallbackInterval silently ignored some values, causing progress updates to appear sluggish or unresponsive regardless of the configured interval. The valid input range has been restored.

State inconsistency where accuracy reduction settings could behave unpredictably across multiple init calls in the same session.

Notes:

• Drop-in library replacement. No script-side changes required.
 

Вложения

Назад
Сверху