Archive: A new encoding pass in the latest innosetup


A new encoding pass in the latest innosetup
Innosetup seems to be able to compress exe files better using this method as they describe it in they "what's new" file:

Executable files are now compressed even better, thanks to a new encoding/decoding pass that optimizes x86 JMP & CALL instructions.
Is there a relation between this method and the BCJ/BCJ2 methods?

Is it possible to implement it in NSIS?

Yes, that is BCJ. This feature has been requested before and is already on the request list.


Actually, it's not BCJ but a similar custom algorithm. Interesting to realize though that until NSIS has something like this, some Inno Setup installers might actually be *smaller* than NSIS installers ;)


All these algorithms work quite similar, it gives you a little better results on compressed x86-32 executables. BCJ2 is even better, but that requires mutliple threads.

Depening on your data, it usually saves some kilobytes, but before you compensate a > 200 KB overhead difference your installer is probably quite large so the overhead is not really important anymore.

Anyway, it's still a nice feature, so hopefully someone will find time to integrate it soon :)