FileForums

FileForums (https://fileforums.com/index.php)
-   Conversion Tutorials (https://fileforums.com/forumdisplay.php?f=55)
-   -   ISArcEx - A FreeArc Archive Extractor Plugin for InnoSetup (https://fileforums.com/showthread.php?t=104980)

BLACKFIRE69 12-03-2022 01:34

ISArcEx - A FreeArc Archive Extractor Plugin for InnoSetup
 
9 Attachment(s)
ISArcEx - Advanced FreeArc Extraction API for Inno Setup
========================================

Code:

> Overview:
ISArcEx is a high-performance extraction library meticulously crafted
for Inno Setup. It provides a robust interface for handling FreeArc
archives, offering advanced progress tracking and precise extraction
metrics that standard tools often lack.

> Specifications:
- Version        : v0.5
- Author        : BLACKFIRE69
- Build                : 6997A400
- Compatibility        : Inno Setup v6.0 or later (Required)
- License      : Proprietary (See LICENSE file for details)
- Tested Engine        : FreeArc v0.67

Code:

> Key Features:
- Archive Support: Specialized in Normal FreeArc
  archives. Note: Splitted archives are not supported.
- Selective Extraction: Use ISArcExAddDisksEx to extract specific
  folders from within an archive.
- 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 External Tooling:
ISArcEx integrates seamlessly with common FreeArc external-processors:
- SREP, XTool, LOLZ, NZ, RZ.
- Support for Facompress (MT and Standard).

> Distribution Files:
- ISArcEx.dll        — Core API Library.
- UnArc_32.dll        — FreeArc engine integration.
- ISArcEx.iss        — Header for Inno Setup.
- arc.ini / CLS.ini — Configuration for external-processors.
- English.ini / Russian.ini — Language configuration files.

.

lolaya 20-03-2022 19:03

i love u work ♥

Gehrman 24-03-2022 01:51

https://www.upload.ee/image/13991445...-24_142029.jpg
what is the problem?

BLACKFIRE69 28-03-2022 13:09

Quote:

Originally Posted by Gehrman (Post 496276)


Code:

1. Goto line 546, (Ctrl + G then 546)

2.

Change
  LabelTime3 := TLabel.Create(WizardForm);
  with LabelTime3 do begin
    ...
    Left    := 180;
    Top      := 200;
  end;

To
  LabelTime3 := TLabel.Create(WizardForm);
  with LabelTime3 do begin
    ...
    Left    := WizardForm.FinishedLabel.Left;
    Top      := WizardForm.FinishedLabel.Top + ScaleY(120);
  end;


Spotless 19-05-2022 05:24

1 Attachment(s)
Hello Blackfire
Could you edit this script for me?

i want to add launch a game check box to the finish page
and when i type the shortcut name called Battle.net it must be Battle.net.lnk for my file location but it does not make it correct
and open a website checkbox too

and a question can i copy ur dll to a new empty script and add my archives to it? because i wanna do some edits with the wizardform designer

thanks!

BLACKFIRE69 26-07-2022 03:49

4 Attachment(s)
Quote:

Originally Posted by Spotless (Post 496909)
a question can i copy ur dll to a new empty script and add my archives to it? because i wanna do some edits with the wizardform designer

thanks!

sorry for the late reply.
you can include ISArcEx for any script. but just copying the dll is not enough.
you should know how to work with the ISArcEx.dll. follow the examples provided for help. or you can PM your script and i can help you out.

Quote:

Originally Posted by Spotless (Post 496909)
Hello Blackfire
Could you edit this script for me?

i want to add launch a game check box to the finish page
and when i type the shortcut name called Battle.net it must be Battle.net.lnk for my file location but it does not make it correct
and open a website checkbox too

ok, check out the attachment. also press "CTRL + F" and search for the word "NewChanges".

.

Gehrman 26-07-2022 06:15

Hi BLACKFIRE69
How to remove this section?
https://upload.cc/i1/2022/07/26/LaJkl8.jpg

BLACKFIRE69 26-07-2022 08:21

1 Attachment(s)
Quote:

Originally Posted by Gehrman (Post 497766)
Hi BLACKFIRE69
How to remove this section?
https://upload.cc/i1/2022/07/26/LaJkl8.jpg

1. Comment the second line of [types] section.

Code:

[Types]
Name: full; Description: Full installation; Flags: iscustom
;Name: custom; Description: Custom installation;

2. Remove types from the [Components] section.
Code:

Before:

[Components]
Name: extra; Description: Extra; Types: full custom;
...
Name: voice; Description: Interface Language and Voices; Types: full;
...

After:

[Components]
Name: extra; Description: Extra;
...
Name: voice; Description: Interface Language and Voices;
...

.

Masquerade 20-12-2022 14:11

First of all, sorry for digging up this topic.

I have a small question about IsArcEx. If I wanted to run a batch file or other script after unpacking the FreeArc archive but also keep the elapsed timer running, whereabouts should I put the command?

All my post-FreeArc command run in a procedure called masquerade_work, so I call this after the FreeArc extraction finishes.

I have tried putting it on the line above IsArcExStop();, but this does not keep the timer running after the last archive has finished extracting:

Code:

for i:= 1 to ISArcExDiskCount do
  begin
    ISArcExError := not ISArcExExtract(i, ExpandConstant('{app}\'), ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'));
    if ISArcExError then break;
  end;
  until true;
  masquerade_work();
ISArcExStop;

Is there something I am doing incorrectly? The reason I would like to keep the elapsed timer running is because some of my scripts run for a long time after extracting data (recompressing, patching large files etc..) so it's important that the installer does not look stuck towards the user.

Thanks,
Masquerade

BLACKFIRE69 21-12-2022 01:14

Quote:

Originally Posted by Masquerade (Post 499484)
First of all, sorry for digging up this topic.

I have a small question about IsArcEx. If I wanted to run a batch file or other script after unpacking the FreeArc archive but also keep the elapsed timer running, whereabouts should I put the command?

All my post-FreeArc command run in a procedure called masquerade_work, so I call this after the FreeArc extraction finishes.

I have tried putting it on the line above IsArcExStop();, but this does not keep the timer running after the last archive has finished extracting:

Code:

for i:= 1 to ISArcExDiskCount do
  begin
    ISArcExError := not ISArcExExtract(i, ExpandConstant('{app}\'), ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'));
    if ISArcExError then break;
  end;
  until true;
  masquerade_work();
ISArcExStop;

Is there something I am doing incorrectly? The reason I would like to keep the elapsed timer running is because some of my scripts run for a long time after extracting data (recompressing, patching large files etc..) so it's important that the installer does not look stuck towards the user.

Thanks,
Masquerade



@Masquerade

Timer will run until it calls ISArcExStop. ;)


Code:

...

  masquerade_work();
  ISArcExStop;  // Timer Stops

...


Masquerade 03-01-2023 00:29

I have encountered a similar problem. Sometimes I need to extract an archive located in {app} and extract it to {app}. Adding a disk from {app} will cause the No Archives to Extract error.

hitman797 03-01-2023 00:33

Quote:

Originally Posted by audiofeel (Post 499640)
It is a little unclear how to specify the path for unpacking, for example, "data2.bf" I need to unpack it in the documents folder. I found how to change the path, but it changes for all archives.
that is, I need to "data1.bf" and "data3.bf " unpacked to the {app} folder. "data 2.bf " unpacked to the {documents} folder

{userdocs} & {commondocs}
The path to the My Documents folder.

BLACKFIRE69 03-01-2023 03:00

Quote:

Originally Posted by audiofeel (Post 499646)
is everything done in a tricky way there. can't you figure it out without 100 grams. if you change the constant, it will change for all archives
Code:

ISArcExDiskCount:= 0;
      if FileExists(ExpandConstant('{src}\{#Data1Path}')) then
      begin
        ISArcDiskAddingFalied:= ISArcExAddDisks(ExpandConstant('{src}\{#Data1Path}'), '{#DiskPassword}');
        if ISArcDiskAddingFalied then break;
        ISArcExDiskCount:= ISArcExDiskCount + 1;
      end;
        for i:= 1 to ISArcExDiskCount do
        begin
          ISArcExError:= not ISArcExExtract(i, ExpandConstant('{app}\'), ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'));
          if ISArcExError then break;
        end;





ok, i'll let you change the output directory when adding disks. ;)

Code:

<--- Change --->

1. syntax:

  function ISArcExAddDisks(Inputfile, Password, OutputPath: Widestring): boolean;

  function ISArcExExtract(DiskNumber: Integer; CfgFile, WorkPath: Widestring): boolean;


2. example:

// Disk Adding part
repeat
  if FileExists(ExpandConstant('{src}\data1.bf')) then
  begin
    ISArcDiskAddingFalied:= ISArcExAddDisks(ExpandConstant('{src}\data1.bf'),
              '{#DiskPassword}', ExpandConstant('{app}'));

    if ISArcDiskAddingFalied then break;
    ISArcExDiskCount := ISArcExDiskCount + 1;
  end;

  ...

  #ifdef Components
  if IsComponentSelected('something1\something2') then
  begin
    ISArcDiskAddingFalied:= ISArcExAddDisks(ExpandConstant('{src}\ConfigShit.bf'),
              '{#DiskPassword}', ExpandConstant('{userdocs}\BFGames'));

    if ISArcDiskAddingFalied then break;
    ISArcExDiskCount := ISArcExDiskCount + 1;
  end;

  ...

  #endif
until true;


.....
  // Extraction
 
  for i := 1 to ISArcExDiskCount do
  begin
    ISArcExError := not ISArcExExtract(i, ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\temp'));
    if ISArcExError then break;
  end;
.....


Code:

summary:

  data1.bf      --->    {app}
  ...
  configShit.bf  --->    {userdocs}\BFGames}
  ...


Note: just replacing the library (.dll) is not enough. update your previous scripts as well.


.

Cesar82 03-01-2023 03:03

Quote:

Originally Posted by audiofeel (Post 499646)
is everything done in a tricky way there. can't you figure it out without 100 grams. if you change the constant, it will change for all archives
Code:

ISArcExDiskCount:= 0;
      if FileExists(ExpandConstant('{src}\{#Data1Path}')) then
      begin
        ISArcDiskAddingFalied:= ISArcExAddDisks(ExpandConstant('{src}\{#Data1Path}'), '{#DiskPassword}');
        if ISArcDiskAddingFalied then break;
        ISArcExDiskCount:= ISArcExDiskCount + 1;
      end;
        for i:= 1 to ISArcExDiskCount do
        begin
          ISArcExError:= not ISArcExExtract(i, ExpandConstant('{app}\'), ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'));
          if ISArcExError then break;
        end;


Code:

      ISArcExDiskCount:= 0;
      if FileExists(ExpandConstant('{src}\{#Data1Path}')) then
      begin
       
ISArcDiskAddingFalied:= ISArcExAddDisks(ExpandConstant('{src}\{#Data1Path}'), '{#DiskPassword}');
        if ISArcDiskAddingFalied then break;
        ISArcExDiskCount:= ISArcExDiskCount + 1;
      end;
      for i:= 1 to ISArcExDiskCount do
      begin
        case
i of
         
1 : ISArcExError:= not ISArcExExtract(i, ExpandConstant('{app}\'), ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'));
          2 : ISArcExError:= not ISArcExExtract(i, ExpandConstant('{userdocs}\'), ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{userdocs}'));
          3 : ISArcExError:= not ISArcExExtract(i, ExpandConstant('{tmp}\'), ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{tmp}'));
          else
         
ISArcExError:= not ISArcExExtract(i, ExpandConstant('{app}\'), ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'));
        end;
        if ISArcExError then break;
      end;

first data file to {app}
second data file to {userdocs}
third data file to {tmp}
all others data file to {app}

BLACKFIRE69 03-01-2023 03:31

Quote:

Originally Posted by BLACKFIRE69 (Post 499648)
ok, i'll let you change the output directory when adding disks. ;)

Code:

<--- Change --->

1. syntax:

  function ISArcExAddDisks(Inputfile, Password, OutputPath: Widestring): boolean;

  function ISArcExExtract(DiskNumber: Integer; CfgFile, WorkPath: Widestring): boolean;


2. example:

// Disk Adding part
repeat
  if FileExists(ExpandConstant('{src}\data1.bf')) then
  begin
    ISArcDiskAddingFalied:= ISArcExAddDisks(ExpandConstant('{src}\data1.bf'),
              '{#DiskPassword}', ExpandConstant('{app}'));

    if ISArcDiskAddingFalied then break;
    ISArcExDiskCount := ISArcExDiskCount + 1;
  end;

  ...

  #ifdef Components
  if IsComponentSelected('something1\something2') then
  begin
    ISArcDiskAddingFalied:= ISArcExAddDisks(ExpandConstant('{src}\ConfigShit.bf'),
              '{#DiskPassword}', ExpandConstant('{userdocs}\BFGames'));

    if ISArcDiskAddingFalied then break;
    ISArcExDiskCount := ISArcExDiskCount + 1;
  end;

  ...

  #endif
until true;


.....
  // Extraction
 
  for i := 1 to ISArcExDiskCount do
  begin
    ISArcExError := not ISArcExExtract(i, ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\temp'));
    if ISArcExError then break;
  end;
.....


Code:

summary:

  data1.bf      --->    {app}
  ...
  configShit.bf  --->    {userdocs}\BFGames}
  ...


Note: just replacing the library (.dll) is not enough. update your previous scripts as well.


.


guys, can you tell me is this lib detected as a virus?

BLACKFIRE69 05-01-2023 07:40

ISArcEx - Updates
 
VER: 0.4.0.1

Code:

What's new:

 - Improved performance, percentage and times.


( this version is not compatible with the old version (v.0.4) )


ffmla 05-01-2023 09:37

1 Attachment(s)
Quote:

Originally Posted by BLACKFIRE69 (Post 499650)
guys, can you tell me is this lib detected as a virus?

My K7 AV didn't detect anything..
VirusTotal report the following things.

Masquerade 05-01-2023 10:13

I've tried updating my script to reflect the new changes however now for some reason the error flag will instantly trigger leading to a failed installation.

There is no log written or IsArcEx error message box that could indicate the problem.

Please may you take a look at my changes and see if anything is incorrect? The old strings are commented out with //.

Thank you!

Code:

//function ISArcExAddDisks(Inputfile, Password: Widestring): boolean;
function ISArcExAddDisks(Inputfile, Password, OutputPath: Widestring): boolean;
  external 'ISArcExAddDisks@files:ISArcEx.dll stdcall';
//function ISArcExExtract(DiskNumber: Integer; OutputPath, CfgFile, WorkPath: Widestring): boolean;
function ISArcExExtract(DiskNumber: Integer; CfgFile, WorkPath: Widestring): boolean;
  external 'ISArcExExtract@files:ISArcEx.dll stdcall';

Code:

    #ifdef Data1
      if FileExists(ExpandConstant('{src}\{#Data1}')) then
      begin
        ISArcDiskAddingFalied:= ISArcExAddDisks(ExpandConstant('{src}\{#Data1}'), '{#DiskPassword}', ExpandConstant('{app}'));
        if ISArcDiskAddingFalied then break;
        ISArcExDiskCount:= ISArcExDiskCount + 1;
      end;
    #endif

Code:

for i:= 1 to ISArcExDiskCount do
        begin
          //ISArcExError := not ISArcExExtract(i, ExpandConstant('{app}\'), ExpandConstant('{tmp}\ARC.INI'), ExpandConstant('{app}'));
          ISArcExError := not ISArcExExtract(i, ExpandConstant('{tmp}\ARC.INI'), ExpandConstant('{app}'));
          if ISArcExError then break;
        end;


BLACKFIRE69 05-01-2023 13:27

Quote:

Originally Posted by Masquerade (Post 499677)
I've tried updating my script to reflect the new changes however now for some reason the error flag will instantly trigger leading to a failed installation.

There is no log written or IsArcEx error message box that could indicate the problem.

Please may you take a look at my changes and see if anything is incorrect? The old strings are commented out with //.

Thank you!

Code:

//function ISArcExAddDisks(Inputfile, Password: Widestring): boolean;
function ISArcExAddDisks(Inputfile, Password, OutputPath: Widestring): boolean;
  external 'ISArcExAddDisks@files:ISArcEx.dll stdcall';
//function ISArcExExtract(DiskNumber: Integer; OutputPath, CfgFile, WorkPath: Widestring): boolean;
function ISArcExExtract(DiskNumber: Integer; CfgFile, WorkPath: Widestring): boolean;
  external 'ISArcExExtract@files:ISArcEx.dll stdcall';

Code:

    #ifdef Data1
      if FileExists(ExpandConstant('{src}\{#Data1}')) then
      begin
        ISArcDiskAddingFalied:= ISArcExAddDisks(ExpandConstant('{src}\{#Data1}'), '{#DiskPassword}', ExpandConstant('{app}'));
        if ISArcDiskAddingFalied then break;
        ISArcExDiskCount:= ISArcExDiskCount + 1;
      end;
    #endif

Code:

for i:= 1 to ISArcExDiskCount do
        begin
          //ISArcExError := not ISArcExExtract(i, ExpandConstant('{app}\'), ExpandConstant('{tmp}\ARC.INI'), ExpandConstant('{app}'));
          ISArcExError := not ISArcExExtract(i, ExpandConstant('{tmp}\ARC.INI'), ExpandConstant('{app}'));
          if ISArcExError then break;
        end;



yes, there's something incorrect. see the hint below. ;)

Code:

v0.4.0.0 (Old)  >>  ISArcDiskAddingFalied

v0.4.0.1 (New)  >>  ISArcDiskAddingSuccess

let me know if you need more help.



Quote:

Originally Posted by Masquerade (Post 499677)
There is no log written or IsArcEx error message box that could indicate the problem.


add this before the ISArcExInit. you'll see the error. (sorry, i put the error message in the wrong place in the script)

Code:

if ISArcExDiskCount = 0 then
  MsgBox('There is no any archive found for unpacking.', mbError, MB_OK);


kj911 05-01-2023 13:40

Typo error?? --> ISArcDiskAddingFalied ! Correct? No. --> ISArcDiskAddingFailed

Masquerade 05-01-2023 15:15

Quote:

Originally Posted by BLACKFIRE69 (Post 499680)
yes, there's something incorrect. see the hint below. ;)

Code:

v0.4.0.0 (Old)  >>  ISArcDiskAddingFalied

v0.4.0.1 (New)  >>  ISArcDiskAddingSuccess


Maybe I am not following, but I don't see how changing the name of the Boolean for the disk adding command will fix the issue.

BLACKFIRE69 05-01-2023 21:11

Quote:

Originally Posted by Masquerade (Post 499683)
Maybe I am not following, but I don't see how changing the name of the Boolean for the disk adding command will fix the issue.


i know it's a bit confusing. but note that it's not just changing the variable name, the ISArcExAddDisks function has also changed.


1).
in the previous version (v0.4) ISArcExAddDisks function returns error state when adding the disks.

i.e. it returns true if a disk was added unsuccessfully (failed). so you need to catch the error state.
Code:

ISArcDiskAddingFalied:= ISArcExAddDisks(...);
if ISArcDiskAddingFalied then break;


2).
the new version (v0.4.0.1) returns the success of adding disks.

i.e. it returns true if a disk was added successfully.

Code:

ISArcDiskAddingSuccess:= ISArcExAddDisks(...);
if not ISArcDiskAddingSuccess then break;


3).
this is the summarized difference.

Code:

v0.4
procedure CurStepChanged(CurStep: TSetupStep);
begin
  ...
  ISArcDiskAddingFalied := True;
  ...
  repeat
      if FileExists(...) then
      begin
        ISArcDiskAddingFalied:= ISArcExAddDisks(...);
        if ISArcDiskAddingFalied then break;
        ISArcExDiskCount := ISArcExDiskCount + 1;
      end;
      ...
  until true;
 
  if (not ISArcDiskAddingFalied) and ISArcExInit(...) then
  begin
    ...
  end;
end;

Code:

v0.4.0.1
procedure CurStepChanged(CurStep: TSetupStep);
begin
  ...
  ISArcDiskAddingSuccess := False;
  ...
  repeat
      if FileExists(...) then
      begin
        ISArcDiskAddingSuccess:= ISArcExAddDisks(...);
        if not ISArcDiskAddingSuccess then break;
        ISArcExDiskCount := ISArcExDiskCount + 1;
      end;
      ...
  until true;
 
  if (ISArcDiskAddingSuccess) and ISArcExInit(...) then
  begin
    ...
  end;
end;


Masquerade 06-01-2023 01:48

@BLACKFIRE69

Thank you for the expansion of your little hint (steps 1 and 2) it was more than sufficient to help me understand the logic behind the instructions. Thanks again and apologies.

BLACKFIRE69 20-03-2023 11:48

ISArcEx - Updates
 
ISArcEx - Quality Updates

Code:

How to Update:

- Just replace the old DLL(v0.4.0.1 - 2023-Jan-05)
    with the new DLL(v0.4.0.1 - 2023-Mar-20).


Tihiy_Don 15-05-2023 13:15

Excellent DDL, switched to it from isDone. Thank you.

Tihiy_Don 22-06-2023 23:20

I ask you to change the ISArcExCancel variable to boolean to match the general concept by analogy with ISArcExError.

Accordingly, if the installation was canceled, it is not an error.
Why not cancel the example and make the download of an excellent unpacking by example:
Quote:

if (CurStep = ssPostInstall) and (ISArcExCancel>0), then....
?

BLACKFIRE69 01-08-2023 07:53

ISArcEx - Updates
 
2 Attachment(s)
Update Available!

Code:

What's New

- Some improvements.

Code:

* How to update?

>> just replace the old DLL with the new one.

.

MMBDON 06-08-2023 12:11

Quote:

Originally Posted by BLACKFIRE69 (Post 501830)
Update Available!

Code:

What's New

- Some improvements.

Code:

* How to update?

>> just replace the old DLL with the new one.

.

Sir, plz add button click sounds to the script.

BLACKFIRE69 04-09-2023 04:44

ISArcEx - Updates
 
2 Attachment(s)
ISArcEx v0.4.0.1 - 2023-Sep-04


What's new:
Code:

* Added 'TotalFile' and 'CurrentFiles' into the callback function.

* Added new functions.
  iprocedure ISArcExReduceCalcAccuracy;
        - this procedure plays a crucial role in stabilizing the 'Time Remaining' and
          'Data Transfer Speed' calculations, ensuring they change
          smoothly and not too rapidly.


  ii. function ISArcExInitEx(WinHandle: Longint; TimeFormat: Integer;
      Callback: TCallbackEx): Boolean;

  iii. procedure ISArcExCallbackInterval(MSec: Cardinal);

* This update may support long paths and special characters in the path (not tested).

* Some improvements and bug fixing.

Code:

type
  TCallback = function(OverallPct, CurrentPct, DiskTotalMB, DiskExtractedMB: Integer;
        DiskName, CurrentFile, TimeStr1, TimeStr2, TimeStr3, Speed: WideString): LongWord;

type
  TCallbackEx = function(OverallPct, CurrentPct, DiskTotalMB, DiskExtractedMB,
        TotalFiles, CurFiles: Integer; DiskName, CurrentFile, TimeStr1, TimeStr2,
        TimeStr3, Speed: WideString): LongWord;


.

Fak Eid 04-09-2023 09:34

Hi @audiofeel @Blackfire69,

I use FMXModule.iss which already has IsArcEx injected. So I don't have to import IsArcEx.dll. Can anyone of you provide the latest Module with the following changes included. I also observed that speed change was an issue, even reported it way back to audiofeel as well. Thanks for the fix.

BLACKFIRE69 12-09-2023 08:25

Testing
 
1 Attachment(s)
Code:

* Added Average Speed.

Code:

type
  TCallback = function(OverallPct, CurrentPct, DiskTotalMB, DiskExtractedMB: Integer;
    DiskName, CurrentFile, RemainsTime, ElapsedTime, CurSpeed, AvgSpeed: WideString): LongWord;

type
  TCallbackEx = function(OverallPct, CurrentPct, DiskTotalMB, DiskExtractedMB, TotalFiles, CurFiles: Integer;
    DiskName, CurrentFile, RemainsTime, ElapsedTime, CurSpeed, AvgSpeed: WideString): LongWord;

so, can you guys test this?


.

Fak Eid 12-09-2023 10:19

@Blackfire69
Thank you soo much.. _/\_
It was a much needed feature to counter speed drop at disks transitions.

BLACKFIRE69 13-03-2024 04:54

ISArcEx - Minor Update
 
1 Attachment(s)
ISArcEx - Minor Update


Quote:

* Some minor improvements.

* ISArcExCleanUp:

- This function is deprecated; you can still call it, but it will have no effect.

* Added new function ISArcExAddDisksEx:

- function ISArcExAddDisksEx(InputFile, Password, BaseDirInArc, OutputPath: WideString): Boolean;
- Now you can extract items (files/folders) from a specific folder within the archive.

Code:

- Example: Consider the following structure of 'data-langs.bin':

--------------------------------------------------------------------------------------
data-langs.bin:
  > Eng
      bin-eng (a folder)
      file-eng.mp4
      {other_items}
  > Rus
      bin-rus (a folder)
      file-rus.mp4
      {other_items}

  {rest_of_the_items_in_the_archive}
--------------------------------------------------------------------------------------



* if you call 'ISArcExAddDisksEx' like this:

  ISArcExAddDisksEx('C:\Test\data-langs.bin', 'MyPwd', 'Eng', 'D:\Test\Output');

* it'll extract items only from the 'Eng' folder (bin-eng, file-eng.mp4, etc.)
into the destination (D:\Test\Output), and other items in the archive will be ignored.


Code:

* And free from false-positive trojan pop-ups.


.

BLACKFIRE69 13-03-2024 05:23

^^^

i forgot to mention some facts regarding 'ISArcExAddDisksEx' in the above post.


Code:

* 'BaseDirInArc' is case-sensitive.
  - 'Bin' and 'bin' are not the same.

* You can also use it with sub-dirs like this:
  - ISArcExAddDisksEx('C:\Test\data-langs.bin', 'MyPwd', 'Bin64\Eng', 'D:\Test\Output');


ozerune 24-03-2024 17:52

I'm very new to directly interacting with Inno and am trying to start here. So I tried to add the razor stdio patch, some xtool libraries, and 7zdll by adding them to arc.ini, the definitions, and the 2 locations where those definitions are checked. I also changed the name of one of the disk file names in the adding disks section. When I run it, it hangs after unpacking the temp folder for about 25 seconds and gives me an error. This works just fine when unpacking it with my own FreeArc setup. The error code is -11. After changing everything back to what it was before and only using built in compressors, I still get the same error. Am I doing something wrong here?

Dragonis40 30-04-2024 11:00

Good evening! I currently use last version of IsArcEx.dll in my scripts, but I often notice that "average speed" parameter is negative, while "current speed" parameter is constant and it seems doesn't change. Is it a bug? Do I forget anything in my code?

Thanks for your reply!

BLACKFIRE69 14-05-2024 04:22

ISArcEx Update
 
Quote:

Originally Posted by Dragonis40 (Post 504370)
Good evening! I currently use last version of IsArcEx.dll in my scripts, but I often notice that "average speed" parameter is negative, while "current speed" parameter is constant and it seems doesn't change. Is it a bug? Do I forget anything in my code?

Thanks for your reply!


ISArcEx Update - [2024-May-14]


Code:

* Updated 'AvgSpeed'.
* Added two new functions:
  - function ISArcExGetTotalSizeMBOfAllDisks: Integer;
  - function ISArcExGetExtractedSizeMBOfAllDisks: Integer;


The first post has been updated.

Masquerade 20-05-2024 13:11

@BLACKFIRE69

You may remember I had some issues with the font in my setup not displaying correctly. Strangely, since yesterday this issue has fixed itself. There are two possible solutions:

- my AMD graphics driver updated

- I changed my monitor configuration so my second monitor is on my left instead of on my right.

Do either of these make any sense to you? Having a second monitor on the left bugs the CODEX installer so it does have some weird impact on Inno setup.

BLACKFIRE69 21-05-2024 03:12

Quote:

Originally Posted by Masquerade (Post 504575)
@BLACKFIRE69

You may remember I had some issues with the font in my setup not displaying correctly. Strangely, since yesterday this issue has fixed itself. There are two possible solutions:

- my AMD graphics driver updated

- I changed my monitor configuration so my second monitor is on my left instead of on my right.

Do either of these make any sense to you? Having a second monitor on the left bugs the CODEX installer so it does have some weird impact on Inno setup.



yes, i remember that, but it's related to the FMXInno, not to ISArcEx, right?


it's interesting that your issues with InnoSetup resolved after updating your graphics drivers and changing your dual monitor configuration.


* Graphics Driver Update:

updating graphics drivers can resolve a wide range of issues. it's possible that the older driver had problems with rendering or handling specific display configurations, which were resolved in the new driver update.

* Dual Monitor Configuration:

changing the position of your secondary monitor could have reset or corrected certain display settings. sometimes, the operating system or the graphics driver might have trouble correctly rendering content on a multi-monitor setup, especially if the setup has non-standard configurations or resolutions. by changing the monitor layout, the system may have reinitialized the display settings, fixing the rendering issues.

* Resolution and DPI Settings:

alterations in monitor configuration can also impact the resolution and DPI settings. if the secondary monitor had a different DPI setting or resolution, changing its position could have forced the system to re-evaluate and apply new settings, potentially fixing issues related to rendering.

Masquerade 23-05-2024 01:06

Oh, apologies, didn't mean to post in the wrong topic. I guess I got confused :eek:


All times are GMT -7. The time now is 03:41.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.
FileForums @ https://fileforums.com