Archive: Want to contribute 2 new features


Want to contribute 2 new features
Hi -

My name is Greg and I work at a company called There. We've been using NSIS for a while now (since 1.51) for our installer and we have been delighted with it, especially the supportive open-source community that surrounds it. Naturally, we'd like to do our part and give something back!

For now I'd like to contribute two small modifications I've made to our version of the installer. I've looked around the site but can't find exactly what the process is for doing so, which is one reason I'm posting here. I also wanted to just run them by the folks here to see if they sound like good ideas to integrate back in.

The first modification is to the core installer. The "CallInstDLL" instruction seems to lack the ability to keep the DLL loaded across calls, which is a problem if you want to preserve state in your DLL across calls. So I added a new instruction "LoadDLL" which, when executed, will basically just load the DLL. Subsequent calls to CallInstDLL using the same DLL filename will forgo the load/free logic IF the DLL was previously loaded using LoadDLL. To keep the change small there is no UnloadDLL, and it's assumed that if you're pre-loading the DLL you want to use it for the life of the installer.

The second modification is to the InstallOptions DLL, it is the addition of a "hyperlink" control. You can specify a new field (similar to a Label) in the .INI file, and it will be drawn and behave like a hyperlink in the dialog. When the user clicks on it, their default browser opens to a web page specified in the .INI file. This is useful if you want to be able to direct your user to a customer support website for more information about your product or install process, rather than have to bake everything into the installer itself. I think the hyperlink is a nifty control to be able to use in installer dialogs, and at present the only appropriate place to fit it in seemed to be in the InstallOptions DLL. But the code could probably be easily adapted to fit the new UI in v2.

I've got modified versions of the code (based on 1.98) in stable condition, please let me know what I should do with it!

Thanks,


Thank you very much for you contributions.

/NOUNLOAD option has been added to version 2.0a7 already, and since a4, if I remember correctly, URLs are automatically detected in the license page and displayed as URLs (clickable too).

I think the IO URL control would make a nice addition to IO. Come over to the IRC channel sometime and we will talk.