Archive: nsis debian gnu/linux package?


nsis debian gnu/linux package?
Hi, I've been preparing a package for the Debian GNU/Linux distribution. I was wondering if people think it would be a useful thing to never have to leave the comfort of your debian system, even when you want to build windows installers for free software.

Also, a question or two about this:
1. The .dll files in the Plugins directory are produced from the source code in the Contrib directory.
2. Is there anything in the Contrib directory that the makensis program needs at runtime? I guess that the .c/.dsp/.dsw files don't need distributing though.
3. Has anyone written a Makefile for the dlls in the Plugins dir?

The current modifications include:

1. loading nsisconf.nsh from /etc/nsisconf.nsh and ~/.nsisconf.nsh instead of the same dir as the executable
2. Move the exe to /usr/bin
3. Install docs and examples in /usr/share/doc/nsis
4. Install the Plugins/Include/Contrib dirs in /usr/share/nsis

Any comments on this?


Nothing from the Contrib folder is used to build makensis itself.


I realise this, I was more thinking in terms of graphics and other kinds of things that people use often in their NSI scripts because they are accustomed to it being there.


grep all the .nsi and .nsh files for ${NSISDIR}. There are more than a few usages of it, but most are referring the Include or Contrib folders.


Thanks for the tip. Seems no-one is interested, but I'm gonna do it anyway, because I hate Windows, but I still need to make Windows installers.


If you can make a package that installs in a standard directory structure on Linux, I'll be interested in including the changes.


Ok, excellent. I'm in the process of auditing the source tarball looking for how each dll/exe is built and writing Makefiles for that. After that, I'll request a sponsor for uploading to debian and clean up the modifications I made for submission to the project.


I don't know C++ very well, but debian's mingw g++ gives the following:

pabs@chianamo:~/devel/debian/nsis-2.05/Contrib$ make -C BgImage/
make: Entering directory `/home/pabs/devel/debian/nsis-2.05/Contrib/BgImage'
i586-mingw32msvc-g++ -Wall -Os -shared -s -mwindows -o ../../Plugins/BgImage.dll BgImage.cpp -lwinmm
In file included from BgImage.cpp:3:
../ExDLL/exdll.h:76: error: declaration of `exec_flags*<anonymous struct>::exec_flags'
../ExDLL/exdll.h:73: error: changes meaning of `exec_flags' from `typedef struct exec_flags exec_flags'

For this construct (from exdll.h):

typedef struct {
int autoclose;
...
} exec_flags;

typedef struct {
exec_flags *exec_flags;
...
} extra_parameters;

Is there a recommended way to fix this so the BgImage plugin (and others that use C++) can go into the debian install? That construct works fine in the AdvSplash/Banner plugins (both written in C).


I'd sure love to have it

We have one client that uses NSIS and wants to migrate his webserver to linux, and we have just installed a debian system, so it would be just in place :)))


Excellent. Which, if any, plugins, include files or graphics do you use from the NSIDIR?


Plugin building status report:

I can build the following plugins fine (with/without modifications) - these are all C plugins:

Plugins/advsplash.dll

Plugins/Banner.dll

Plugins/Dialer.dll

Plugins/LangDLL.dll

Plugins/nsExec.dll

Plugins/UserInfo.dll

Plugins/splash.dll

Plugins/StartMenu.dll

Plugins/VPatch.dll

These all have the problem with the exdll.h file that I posted above (all C++):

Plugins/InstallOptions.dll

Plugins/TypeLib.dll

Plugins/Math.dll

Plugins/BgImage.dll

Plugins/nsisdl.dll


This one has a similar error in one of its own files (also C++):

Plugins/System.dll


Now onto binaries placed in Contrib in the source tarball.

How should I contribute the Contrib changes? These are Makefiles, case changes and minor edits so far. diff against the unpacked source tarball? A zip of the modified Contrib directory?


Could you put the debian dir you made anywhere?

I'd like to download it and start tweaking with it :)

thanks


As I'm already writing a SCons build system, I will not include any contributed Makefiles. Case changes will also be rejected as CVS doesn't support renames and I'd like to keep the change log easy to follow. Other patches can be submitted as CVS diffs in the patches tracker.


Latest deb, orig.tar.gz, .diff.gz, build log etc will be available at http://bonedaddy.net/pabs3/debian/ until this gets into debian, or if I can't find a sponsor, I'll start uploading to mentors.debian.net I think.

I got this file building: Contrib/Library/LibraryLocal/LibraryLocal.exe

Unfortunately, not really sure where other binaries in Contrib are built from. Any ideas? I speak of these:
Contrib/UIs/modern_nodesc.exe
Contrib/UIs/default.exe
Contrib/UIs/modern_smalldesc.exe
Contrib/UIs/sdbarker_tiny.exe
Contrib/UIs/modern_headerbmp.exe
Contrib/UIs/modern_headerbmpr.exe
Contrib/UIs/modern.exe
Contrib/System/Resource.dll
Contrib/Library/RegTool/RegTool.bin
Contrib/NSIS Update/UI.exe
Contrib/NSIS Update/ExtractDLL.dll


Contrib\UIs\default.exe is built from Contrib\UIs\UI Holder. All of the other executables are modified versions of default.exe. Resource Hacker was used to modify them. Contrib\System\Resource.dll is not built from Source, it's just a DLL with some icons. Contrib\Library\RegTool\RegTool.bin is built from RegTool.nsi. The source code for Contrib\NSIS Update\ExtractDLL.dll is available on the Archive.


Thanks for the info re binaries. Where do the icons for Contrib\System\Resource.dll come from? Any info on the modifications to default.exe?

The case changes I spoke of are inside .c files, where some of the C sources are including files that don't exist if you have a case sensitive file system. I'll submit the patches (minus makefiles) to the tracker later today.


I've already built a .deb :)

Thanks for the work.

btw, you should to put g++ as build-depend.


Well, it builds fine inside a pbuilder without adding g++ to the Build-Depends. Do you have build-essential installed?

Also, I sent an update that fixes the problem I was having with ExDLL above, which means several more DLLs are now built.

Here's my TODO before the RFS:


Include the current directory in the search path for nsisconf.nsh and for files referenced by the Plugins code and elsewhere so that RegTool.bin can be created at build time.

Install stuff referenced from the example files etc into /usr/share/nsis/Contrib

Place copyrights from Contrib into debian/copyright


Ok, I've uploaded to mentors.debian.net and am going to file an RFS later today.

http://mentors.debian.net/debian/pool/main/n/nsis/
http://bonedaddy.net/pabs3/debian
http://bonedaddy.net/pabs3/debian/nsis_2.05-1_i386.deb
http://bonedaddy.net/pabs3/debian/ns...5-1_i386.build


Found a sponsor and packaged 2.06. It may even get into sarge!!


2.06 has been uploaded, and is in the new queue:
http://ftp-master.debian.org/new.html


nsis has been accepted into debian!

http://packages.qa.debian.org/n/nsis.html

If sarge freezes in more than 10 days time, it may even make it into sarge on some platforms.

Unfortunately the mipsel and sparc builds failed due to problems in halibut (a segfault and a bus error), so it would be good if halibut in nsis was updated to the latest upstream release when nsis is next released.

http://buildd.debian.org/build.php?pkg=nsis


NSIS into sarge
Sarge got frozen!
but nsis got into!

congrats pabs