InnoSetup MultiArc Addon

Discuss and announce Total Commander plugins, addons and other useful tools here, both their usage and their development.

Moderators: white, Hacker, petermad, Stefan2

Post Reply
TychoBarfy
Senior Member
Senior Member
Posts: 340
Joined: 2005-08-13, 15:13 UTC
Location: Berlin, Germany
Contact:

Re: InnoSetup MultiArc Addon

Post by *TychoBarfy »

deus-ex wrote: 2021-05-12, 15:02 UTC Here's an update of the Inno Setup addon. Give it a try and check whether you still get undeleted files in the temp folder $mltwcx. Try both with BatchUnpack=1 (default) and BatchUnpack=0.

For browsing Inno Setup Installers and viewing/extracting single files only, there is no speed penalty using BatchUnpack=0. For extraction of the entire content or at least major parts, BatchUnpack=1 is strongly recommended, though.

Code: Select all

; Addon   : Inno Setup
; Version : 3.1, 2021-05-12 by deus-ex
; Authors : Gnozal, Maxwish, arsvrn, MultiArc team, ZoSTeR,
;           XPEHOPE3KA, icfu, TychoBarfy, MVV, deus-ex
; Required: Total Commander v9.5x, https://www.ghisler.com
...
Watch out, here it comes!
Using BatchUnpack=1
1. No list files left in $mltwcx.
2. Going into embedded or app dir and extract/view some files -> 0 byte files are created.
3. Marking {embedded}, {app}, install_script.iss file (in root of inno setup file) and extract it, everything is OK and no 0 byte files are created. :mrgreen: Just discovered it today. Working without using -y param too, but we should leave it that way.

Conclusion: If you have a problematic Inno Setup producing 0 byte files viewing/extracting files in subfolders of root, mark all you want in root and extract it. So you can leave BatchUnpack set to 1!

Doesn't work with password protected files!
User avatar
deus-ex
Power Member
Power Member
Posts: 969
Joined: 2003-02-10, 17:45 UTC

Re: InnoSetup MultiArc Addon

Post by *deus-ex »

Interesting find. Basically, with BatchUnpack=1 the extraction of any file and subfolder from the root folder of highlight-setup-4.0-x64.exe works. I.e. moving the cursor onto the subfolder 'embedded' and pressing [F5] will extract the entire subfolder without issues. However, if you enter into any subfolder ('embedded' or '{app}'), the extraction does not work anymore, only zero-byte files are created instead.

So this still breaks the ability to view/extract single files out of subfolders from such Inno Setup installers, which makes you want to use BatchUnpack=0 instead.

Wow, what a mindboggling riddle. I wonder which compression settings were used to create the archive contained in highlight-setup-4.0-x64.exe. I suppose perhaps there's a difference between solid and non-solid archives or the encoding?
TychoBarfy
Senior Member
Senior Member
Posts: 340
Joined: 2005-08-13, 15:13 UTC
Location: Berlin, Germany
Contact:

Re: InnoSetup MultiArc Addon

Post by *TychoBarfy »

OTW, InnoUnpack and InnoExtractor always extract files including folder structure. Even if you extract a single file.
So if you want to extract abab.lang located in {app}\LangDefs, It creates {app}\LangDefs in target dir and puts abab.lang into LangDefs folder.
User avatar
MVV
Power Member
Power Member
Posts: 8702
Joined: 2008-08-03, 12:51 UTC
Location: Russian Federation

Re: InnoSetup MultiArc Addon

Post by *MVV »

TychoBarfy wrote: 2021-05-12, 13:23 UTC

Code: Select all

Extract=%P -e -b -m -q %AQA @%LQ
@%LQ equals list.
My $mltwcx is full of not deleted list files generated and not deleted while working with problematic inno setups and ExtractWihPath.
Here the full contents of test.lst/test.tmp:

Code: Select all

; Version detected: 6000 (Unicode)
Size        Time              Filename
--------------------------------------
...
This is just an InnoUnp listing output, it is not compatible with filelist that is required for unpacking! MultiArc names archiver outputs in $mltwcx as zha*.tmp and list files for %L as lst*.tmp, you can catch them in debug mode or if you put some long-running program path to Extract or ExtractWithPath command line.

E.g. you can put this tiny Execute tool into your MultiArc folder and insert Execute.exe in front of ExtractWithPath command line:

Code: Select all

ExtractWithPath=Execute.exe %PQA -x -b -m -q -y %AQA @%LQA
As a result, the tool will confirm every ExtrachWithPath execution with a message box showing full command line to be executed and working directory, and while the message box is displaying, you can steal specified filelist file from temporary folder via Explorer or another TC instance.

Or you can set Debug=1 for this addon (I've checked just now, it works).
Last edited by MVV on 2021-05-13, 09:54 UTC, edited 6 times in total.
TychoBarfy
Senior Member
Senior Member
Posts: 340
Joined: 2005-08-13, 15:13 UTC
Location: Berlin, Germany
Contact:

Re: InnoSetup MultiArc Addon

Post by *TychoBarfy »

MVV wrote: 2021-05-13, 05:37 UTC E.g. you can put this tiny Execute tool into your MultiArc folder and insert Execute.exe in front of ExtractWithPath command line:

Code: Select all

ExtractWithPath=Execute.exe %PQA -x -b -m -q -y %AQA @%LQA
Thanks for that tool. Now I am able to create my own lists for testing. 8)
Now, executing

Code: Select all

innounp -x -b -m -q "highlight-setup-4.0-x64.exe" @test.tmp
in "f:\Downloads\Test\ex\" in cmd console extracts whole content of setup.exe without issues (full list).
Same result when reducing the list to:

Code: Select all

{app}\langDefs\asp.lang
{app}\langDefs\aspect.lang
{app}\langDefs\assembler.lang
No 0-byte files...
User avatar
MVV
Power Member
Power Member
Posts: 8702
Joined: 2008-08-03, 12:51 UTC
Location: Russian Federation

Re: InnoSetup MultiArc Addon

Post by *MVV »

I was able to reproduce 0-byte files, moving from MultiArc temp folder to TC temp folder fails. And it happens because TC creates empty file(s) in its temp folder between ProcessFile call and closing archive! And this only happens in TC 10, in TC 9.51 it just works!
User avatar
deus-ex
Power Member
Power Member
Posts: 969
Joined: 2003-02-10, 17:45 UTC

Re: InnoSetup MultiArc Addon

Post by *deus-ex »

TychoBarfy wrote: 2021-05-13, 08:52 UTC Now, executing

Code: Select all

innounp -x -b -m -q "highlight-setup-4.0-x64.exe" @test.tmp
in "f:\Downloads\Test\ex\" in cmd console extracts whole content of setup.exe without issues (full list).
Same result when reducing the list to:

Code: Select all

{app}\langDefs\asp.lang
{app}\langDefs\aspect.lang
{app}\langDefs\assembler.lang
No 0-byte files...
That InnoUnp is indeed able to unpack highlight-setup-4.0-x64.exe partially/entirely without issues was never the question, I think I confirmed this often enough. The question is why does the extraction of most Inno Setup installers via MultiArc work fine, but for a few, extraction works only for the root folder content?
User avatar
deus-ex
Power Member
Power Member
Posts: 969
Joined: 2003-02-10, 17:45 UTC

Re: InnoSetup MultiArc Addon

Post by *deus-ex »

MVV wrote: 2021-05-13, 09:55 UTC I was able to reproduce 0-byte files, moving from MultiArc temp folder to TC temp folder fails. And it happens because TC creates empty file(s) in its temp folder between ProcessFile call and closing archive! And this only happens in TC 10, in TC 9.51 it just works!
Wow, great find! I can confirm that it indeed works flawlessly in Total Commander v9.51.


I wrote myself a special batch routine long ago that enables me to peek into/extract files making use of 7-Zip's features. 7-Zip does not support the compression format used in Inno Setup installers (a ZLib variant), but it can parse the contents of the PE structure or detected compression streams.

Reviewing the 7-Zip parsing results of PDF24 Creator v9.2.2 and PDF24 Creator v10.0.12, I found that PDF24 Creator v10.0.12 uses the PKZip deflate algorithm for compression while PDF24 Creator v9.2.2 does not.

EDIT:
As a reminder, extraction of PDF24 Creator v9.2.2 via MultiArc in TC v10 works fine, while for PDF24 Creator v10.0.12 only the root folder content can be extracted.
/EDIT


Screenshots of the 7-Zip parsings:

PDF24 Creator v9.2.2
PE content
Compression streams

PDF24 Creator v10.0.12
PE content
Compression streams parse 1
Compression streams parse 2

Most probably the detection routines in Total Commander v10 were changed, therefor TC v10 now steels the extraction from MultiArc/InnoUnp when it detects the PKZip header in the compressed content.
Last edited by deus-ex on 2021-05-13, 11:18 UTC, edited 1 time in total.
User avatar
MVV
Power Member
Power Member
Posts: 8702
Joined: 2008-08-03, 12:51 UTC
Location: Russian Federation

Re: InnoSetup MultiArc Addon

Post by *MVV »

No, it shouldn't be so, TC calls MultiArc for this archive so MultiArc handles listing/extraction. But it is really interesting why TC 10 creates empty files in such case...
User avatar
deus-ex
Power Member
Power Member
Posts: 969
Joined: 2003-02-10, 17:45 UTC

Re: InnoSetup MultiArc Addon

Post by *deus-ex »

Are you going into contact with Christian to present our findings? I'm sure he is able to give some pointers about what is the reason for the different behaviour of TC v9.x and TC v10.x.
User avatar
MVV
Power Member
Power Member
Posts: 8702
Joined: 2008-08-03, 12:51 UTC
Location: Russian Federation

Re: InnoSetup MultiArc Addon

Post by *MVV »

I think we should. However I've fixed this issue using additional MoveFileEx function flag. Please try this beta version.
User avatar
deus-ex
Power Member
Power Member
Posts: 969
Joined: 2003-02-10, 17:45 UTC

Re: InnoSetup MultiArc Addon

Post by *deus-ex »

Confirmed, with the additional MoveFileEx function flag applied the issue is fixed. I now can access the previously problematic Inno Setup installers with BatchUnpack=1 flawlessly. Good job! :D
User avatar
deus-ex
Power Member
Power Member
Posts: 969
Joined: 2003-02-10, 17:45 UTC

Re: InnoSetup MultiArc Addon

Post by *deus-ex »

An update of the English translation was quite due. So I take the opportunity to go along with a new and improved release of MultiArc v1.4.4. Please enjoy. :D

Download: deus-ex_MultiArc-translation_English_v3.0.rar
Last edited by deus-ex on 2021-05-17, 11:06 UTC, edited 1 time in total.
User avatar
deus-ex
Power Member
Power Member
Posts: 969
Joined: 2003-02-10, 17:45 UTC

Re: InnoSetup MultiArc Addon

Post by *deus-ex »

Eine Aktualisierung der deutschen Übersetzung war längst überfällig. Also nutze ich die Gelegenheit, bei einer neuen und verbesserten Veröffentlichung von MultiArc v1.4.4 mitzumachen. Viel Spaß. :D

Download: deus-ex_MultiArc-translation_German_v3.0.rar
Last edited by deus-ex on 2021-05-17, 11:06 UTC, edited 1 time in total.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48021
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Re: InnoSetup MultiArc Addon

Post by *ghisler(Author) »

I was able to reproduce 0-byte files, moving from MultiArc temp folder to TC temp folder fails. And it happens because TC creates empty file(s) in its temp folder between ProcessFile call and closing archive! And this only happens in TC 10, in TC 9.51 it just works!
I'm not aware of any change in TC 10 causing this. What names do these files have?
Author of Total Commander
https://www.ghisler.com
Post Reply