FileForums

FileForums (https://fileforums.com/index.php)
-   Conversion Tutorials (https://fileforums.com/forumdisplay.php?f=55)
-   -   CLS-DiskSpan (UltraARC replacement) (https://fileforums.com/showthread.php?t=99627)

Razor12911 07-11-2017 18:58

1 Attachment(s)
R2 uploaded

Changes

-Removed custom open dialog ability
-Added default open dialog

Notes

-Seems like source had to be changed a bit for this, good thing I uploaded source here because I no longer had it.
-Ran 2 tests and no bugs so I guess bug is fixed.
-Data not affected, just replace cls and add functions to iss to fix old cls bugs.

danswano 07-11-2017 22:53

Thanks razor but can you help me with my second issue?
i want to be able to extract another single arc archive after the split archive extraction is done, the installer is skipping it.

Simorq 08-11-2017 03:51

Thanks Razor12911
Works well.:D

KaktoR 08-11-2017 06:23

^Could you share compiled source?

78372 08-11-2017 07:00

Quote:

Originally Posted by KaktoR (Post 463910)
^Could you share compiled source?

Can you see first post? :confused:

KaktoR 08-11-2017 07:33

Sorry bro, i have just to open my eyes :D

Razor12911 08-11-2017 08:23

Quote:

Originally Posted by danswano (Post 463903)
Thanks razor but can you help me with my second issue?
i want to be able to extract another single arc archive after the split archive extraction is done, the installer is skipping it.

Upload iss and compressor

danswano 08-11-2017 12:15

Quote:

Originally Posted by Razor12911 (Post 463915)
Upload iss and compressor

PM sent, thank you very much.

Razor12911 08-11-2017 14:21

Code:

procedure ISDone_Unpack;
begin                                                 
  ISDone_Resources;
  ISDoneError:=false;
  if ISDoneInit(ExpandConstant('{tmp}\records.inf'), $F777, 0,0,0, MainForm.Handle, 512, @ProgressCallback) then
  begin
    ChangeLanguage('English');
    if SrepInit(AddBackSlash(ExpandConstant('{app}')),512 ,0) and PrecompInit('',128, 0) and FileSearchInit(true) then
    begin
      WizardForm.ProgressGauge.Position := 0;
      Wizardform.ProgressGauge.Max := 1000;
      ClsSourcePath(ExpandConstant('{src}'));
      ClsDiskRequest(@MyDiskRequest);
      if not ISArcExtract(0, 90, ExpandConstant('{src}\data.001'), ExpandConstant('{app}'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'), false) then
      //here dear razor
      if not ISArcExtract(0, 10, ExpandConstant('{src}\data.arc'), ExpandConstant('{app}'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'), false) then
        ISDoneError := True;
    end;
    ISDoneStop;
  end;
  if ISDoneError = True then
    WizardForm.CancelButton.OnClick(nil);
end;

this part here:

Code:

      if not ISArcExtract(0, 90, ExpandConstant('{src}\data.001'), ExpandConstant('{app}'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'), false) then
      //here dear razor
      if not ISArcExtract(0, 10, ExpandConstant('{src}\data.arc'), ExpandConstant('{app}'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'), false) then
        ISDoneError := True;

to properly write it, it's something like
Code:

if not ISArcExtract(0, 90, ExpandConstant('{src}\data.001'), ExpandConstant('{app}'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'), false) then
  if not ISArcExtract(0, 10, ExpandConstant('{src}\data.arc'), ExpandConstant('{app}'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'), false) then
    ISDoneError := True;

means if unpacking data.001 and if unpacking fails then unpack data.arc but if data.001 gets unpacked successfully, then don't unpack data.arc, not CLS-diskspan bug but your coding mistakes


you forgot to add ISDoneError := True for data.001, so to fix it, it has to be

Code:

procedure ISDone_Unpack;
begin                                                 
  ISDone_Resources;
  ISDoneError:=false;
  if ISDoneInit(ExpandConstant('{tmp}\records.inf'), $F777, 0,0,0, MainForm.Handle, 512, @ProgressCallback) then
  begin
    ChangeLanguage('English');
    if SrepInit(AddBackSlash(ExpandConstant('{app}')),512 ,0) and PrecompInit('',128, 0) and FileSearchInit(true) then
    begin
      WizardForm.ProgressGauge.Position := 0;
      Wizardform.ProgressGauge.Max := 1000;
      ClsSourcePath(ExpandConstant('{src}'));
      ClsDiskRequest(@MyDiskRequest);
      if not ISArcExtract(0, 90, ExpandConstant('{src}\data.001'), ExpandConstant('{app}'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'), false) then
              ISDoneError := True; // that is what you missed
      if not ISArcExtract(0, 10, ExpandConstant('{src}\data.arc'), ExpandConstant('{app}'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'), false) then
        ISDoneError := True;
    end;
    ISDoneStop;
  end;
  if ISDoneError = True then
    WizardForm.CancelButton.OnClick(nil);
end;

Didn't run test, but it seemed like the obvious source of the problem in the script.

danswano 08-11-2017 23:06

What the world can do without you dear razor.
Really appreciate your kind help and efforts.
God bless you.

vollachr 10-11-2017 06:15

Hi,

Razor12911, with your permission, I would love to add this to the compression tool I created as a FreeArc compression method.

That said, I can't really figure out what to add into the Arc.ini file in order to get it working, so if you would, could you please explain that?

Thank you.

Razor12911 10-11-2017 20:54

Quote:

Originally Posted by vollachr (Post 463973)
Hi,

Razor12911, with your permission, I would love to add this to the compression tool I created as a FreeArc compression method.

That said, I can't really figure out what to add into the Arc.ini file in order to get it working, so if you would, could you please explain that?

Thank you.

Knock yourself out.
cls do not work with arc.ini :)

vollachr 11-11-2017 03:33

Quote:

Originally Posted by Razor12911 (Post 463995)
Knock yourself out.
cls do not work with arc.ini :)

So how does it work with the arc.exe command, it just needs to be in the same folder? or is there something else?

Razor12911 11-11-2017 19:03

Quote:

Originally Posted by vollachr (Post 464002)
So how does it work with the arc.exe command, it just needs to be in the same folder? or is there something else?

Quote:

Originally Posted by Razor12911 (Post 463197)
CLS-DiskSpan
The method diskspan should come after all methods you would have used for compression.
e.g.
pzlib:t4+srep:m3f:lzma:ultra+diskspan:4.35gb:4.36g b

The disk span method comes with two parameters. The first parameter is for first volume size, the second one is for all volumes apart from the first.
e.g. diskspan:390mb:400mb, 390mb in this case is the first volume size then the rest of the volumes will be 400mb

:)

vollachr 12-11-2017 00:53

Yeah, pretty much figured that out by now, just one thing I noticed..

It seems DiskSpan only works correctly if there are no other methods set before it or there are External Compressors set for method before it.

I couldn't get it to work when setting the FreeArc internal methods such as M2, M3 or M4 before DiskSpan, it spits out an error.

Also, So far all the attempts I made in adding support for DiskSpan to my compression tool failed, it's basically a batch script (bat file), thing is Arc.exe keeps crashing when I'm making it use DiskSpan in my script, I can't figure out why.

UPDATE:
OK, Managed to get it partially working, it creates the .001 file when the size can fit in one archive but I get an error when it actually need to start to split (creating the .002 file), also, it seems arc.exe only crashes when there's no other external compressor defined before diskspan.


All times are GMT -7. The time now is 16:46.

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