- NSIS Discussion
- How to overcome 2GB-per-file limit
Archive: How to overcome 2GB-per-file limit
erundil
21st April 2011 14:43 UTC
How to overcome 2GB-per-file limit
I'm making a big installer this time and I have stumbled upon a ridiculous error:
Internal compiler error #12345
I did some digging and found out, that max. size of NSIS installer is about 2GB.
Well, ok, it makes sense for some veeery old OS's, but now-a-days it's a big problem. Why?
First - it's very convenient for the end-user to use a single file instead of keeping lots of smaller ones
Second - it's much easier to distribute on the web
So my question is - when will that limitation be taken off?
Additionaly I'd like to ask if there is any way to hack those limits somehow. Different compression maybe? Or different compiler? Anything?
(Multiple-files-installer is not an option!)
Highcoder
21st April 2011 14:58 UTC
...it makes sense for some veeery old OS's...
not only. It makes sense on every FAT32 Partition and afaik for normal http downloads too.
Of course a single file is very comfotable but especially on those huge files you should force a crc check. And THIS takes a very long time with this filesize...
If that kind of kingsize installers whould be a practicable way don´t you think some major software labels whould do this already?
To increase compression ratio use LZMA /SOLID compression method. But you should think about multifile installers (one exe & cab´s or 7zip´s). There are NSIS Plugins for this case.
cheers
erundil
21st April 2011 15:13 UTC
Thanks for quick reply, but it wasn't a question of "should I", but "how to".
At the very beginning: you are wrong. 2GB limits are present in FAT16. FAT32 is limited to 4GB. But still that's not good enough, I need something like 5. NTFS drives are good with files bigger than 4GBs.
If you say about "big developers", I'd like to remind, that "big developers" usualy release on DVDs, where multifile installer is not a problem at all.
One file, got it?
But going back to DVD-releases, I was thinking about a multifile installer on ISO image. Gives one file. Still it needs to be mounted, not to mention that I have no idea about AutoRun.
So solution is simple - make new version of NSIS, enabling 2GB+ installers, but to warn programmer, that exe this big might not be supported on some systems. Maybe introduce a trigger that have to be switched, like e.g. !define Over2GB or SetCompressor /2GB+ LZMA...
Highcoder
21st April 2011 15:52 UTC
...
I understood your question. :)
I made this suggestions because some people think (you don´t) they have to create 2 or more exe files and the user has to execute it one after another. And that looks not professional.
But in the moment there is no way to create one-file-installers bigger then 2GB with NSIS.
And you´re right. fat32 supports files with a size one byte less then 4GB. Provide an ISO or compressed file archive is a possible solution.
cheers
erundil
22nd April 2011 02:21 UTC
Yeah, now working on it (on ISO, I mean). It's just there was no new version of NSIS since 6.12.2009 (more than a year, huh?), so I was just curious if we can push on NSIS Devs to extend the abilities of the compiler... But I don't see that coming, so... I'll stick to ISO. Heh.
Still a dreamer :)
erundil
9th October 2011 00:24 UTC
One more thing. Most installers we find on DVDs are unpacking files from containers like BIN files.
Are there any NSIS libraries supporting it, or do I have to create my own functions to pack and unpack data?
T.Slappy
10th October 2011 05:41 UTC
Those .bins use their own proprietary format. Simply use .zip .cab .7z or other common archive - NSIS has a lot of plug-ins for working with them.
MSG
10th October 2011 10:32 UTC
If it's an innosetup exe/bin file, you can use innounp to unpack it.