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
 

Вложения

Назад
Сверху