Archive: 2 -> 2.02: 10 kb bigger installer?


2 -> 2.02: 10 kb bigger installer?
Hi,

I upgraded NSIS from 2 to 2.02 and now the generated installer is 10 kb bigger. I'm using LZMA compression.

Where did those 10 kb come from?
I saw nothing in the FAQ about this.


10 KB is nothing.... :)

Maybe, source update, plugins update, etc..


Yep, 10kb is only an extra 3 seconds even on a 56k :D
But it is still a good question worthy of an answer...

-Stu


I have another result: 1 kB less package with lzma. IMHO this is compressor tricks, in most cases NSIS lzma and WinZip give similar results, but sometimes zip has up to 5% less size (and WinZip compression stability looks higher). Compiller window shows some compression results.


Originally posted by Afrow UK
Yep, 10kb is only an extra 3 seconds even on a 56k :D
But it is still a good question worthy of an answer...

-Stu
It's still 5 %.

Is it always 10k larger? What if you recompile? When using solid compression, which is turned on by default for lzma, dates are compressed along with everything else. These dates include file's last access date and some other dates I don't quite remember right now. Therefore, at each compile, the size might differ a bit.


Yes, it's always 10 kb larger.
I compiled with the old version, installed the new version, compiled again and it was 10 kb larger while nothing else changed.


Can you attach a complete example?


If the script?
Sure: http://cvs.sourceforge.net/viewcvs.p...1.40&view=auto


I have tried compiling the script with 2.0 and 2.02 and got a 10 bytes difference. I have only copied the old makensis.exe, but your script doesn't use anything else. Can you test it again?


Just switching makensis.exe isn't enough. I installed 2.0 again and the .exe gets 10 kb smaller. I installed 2.02 again and it gets 10 kb larger.


Ah, I see the change now. It's in UpgradeDLL.nsh. Joost changed it so it'd use a tool from the new Library.nsh. This tool replaces rundll32.exe because it doesn't always exist. If you want a smaller installer, even with this change, you can use lzma:

SetCompressor lzma

I'm already using lzma.

BTW, why is lzma not the default compressor?


Is that tool/rundll also required if you the DLL doesn't need to be registered?


No, it's only for registering DLLs.


!define UPGRADEDLL_NOREGISTER
Isn't that enough to exclude it?