Pull request: A better windows installer

Lubomir I. Ivanov neolit123 at gmail.com
Thu Sep 13 06:15:46 PDT 2012


On 13 September 2012 15:38, Ivan Habunek <ivan.habunek at gmail.com> wrote:
> Hi all,
>
> I created a nicer windows installer which uses the NSIS Modern UI, and
> offers some standard features such as choosing the target folder and
> whether to create shortcuts (full info in git log). I think it's an
> marked improvement over what we have now, however I still have a few
> issues with it.
>
> Firstly, the Subsurface version is hardcoded in the .nsi script
> ($VERSION). This means it has to be changed manually on each release.
>
> Secondly, the library versions change over time, but names of compiled
> DLL files which are packaged into the installer are hardcoded in the
> installer script (e.g. "libjpeg-62.dll"). So, if a lib version
> changes, the installer script must also be modified.
>
> Not yet sure how to solve these problems, if anybody has an idea, let it rip.
>

nice,

i will take a look at your "modern" UI implementation. i wasn't able
to sort it out with the native windows version of NSIS (probably do to
a silly mistake).

i'm basically using a custom NSIS for this distribution:
https://github.com/neolit123/subsurface_win32
also custom makefile for the application and even for the docs in that matter.

there isn't really a good solution to the different version of shared
libraries. for example, what the GTK website and third party sources
provided for windows have headers and binaries completely different
from what a linux distribution may have. in fact everyone building on
linux may end up with different flavored set of libraries depending on
his distribution...

i think, a solution is to output the DLLs to a "dll" folder and
include *.* from there, something like:
File /r dll/*.dll /x dll

when the user updates subsurface on windows, this may cause stacking
of redundant libraries. what can be done to prevent that is to write
the NSIS script so that it deletes existing all existing DLL before
adding the new ones.

sed (http://en.wikipedia.org/wiki/Sed) can be used to change the version.
but the manual version increment is not much of an issue in general;
also has to edited in the RC file.

lubomir
--


More information about the subsurface mailing list