#15 Automatic Files section optimization


Hi there,

first of all thanks for your great tool. Without it, I wouldn't have a neat installer now, because mastering Inno without a nice point and click gui is far too complex for a beginner. My project spanned 5GB and 25.000 files. Since I had to work with limited storage space, I wanted to optimize the installer for the smallest size and that's when I realized what ISTool was still lacking:

Inno supports to store similar files only once and duplicates them upon installation, however, it does not find the dupes automatically as I expected, but rather forces the user to do that manually. A dupe-finder function in ISTool would help loads. This can be done via simple crc-checks. Another lack of the compiler is the fact that it doesn't sort the files efficiently after the dupes have been eliminated. This doesn't matter for complete installations, but it sure does when dupes of several components access sources from other components, making the installer read the archive from the beginning again (with solid compression). For example:

File 1
File 2
File 100 Is source for a file in a component that only starts with file 5000

So in the above example, choosing the component that is stored at the end of the archive would make the installer have to jump over all the previous data to start the extraction, just to jump back to the beginning with more seeking to find the source for the dupe in that component. Then the installer would seek again to resume the extraction of the component.

The above example happened to me. After finding all the dupes and editing the list accordingly, setup took hours to extract a few small files. I had to sort 5000 entries manually and place them next to the entries of the original files that they referenced to eliminate that massive extraction overhead.

It would also be great if ISTool featured a list sort function, for example to sort the files entries alphabetically, by components, by file ending etc. with an option to exclude files from that sorting and a drag and drop method to sort large batches of files manually. This sorting should not just be cosmetically in the editor window, but should actually be saved in the iss-file.

I would also love to have another optimization feature, which goes hand in hand with the dupe finding process: A way to choose a preferred source file for the dupes, e.g. by prioritizing a component, file name, path etc. This way the user can control that all dupes will be spawned from a single component if possible, for example the main component.

I know this is a big request, but also a feature worth having. Over the last few weeks I tested so many installers and none actually offered this capability. I'm aware that this would be handled more efficiently by modifying the compiler, but I doubt that Jordan Russel would ever implement it. Since most of it can be done by text-processing the iss-file, ISTool would really shine among the editors. Anyway, let me know what you think.