Re: [Warzone-dev] NSIS installer
Am Mittwoch, 27. Dezember 2006 04:27 schrieb Giel van Schijndel: Dennis Schridde schreef: Am Mittwoch, 27. Dezember 2006 02:50 schrieb Giel van Schijndel: Christian Ohm schreef: On Wednesday, 27 December 2006 at 1:46, Giel van Schijndel wrote: * added some DLLs (SDL.dll, SDL_net.dll, physfs.dll, vorbisfile.dll, ogg.dll, vorbis.dll, png13.dll, zlib1.dll, jpeg6b.dll) ( *NOTE: I'm afraight that the current installer executable you're distributing won't work without these DLLs* ) What current installer? The one you can download from gna.org for 2.0.5 works on a system that has never seen Warzone before (but perhaps you're talking about something else, and I'm too tired to notice). Nah, it apparently was me who was/is too tired to notice (CET=GMT+1 here, so calculate it if you wish). It seems that that executable is statically linked to these libraries. Exactly. :) Some ppl said that they didn't like all those DLLs in the folder, they are not needed anyway, since probably never more than 1 app will use our compilation of libpng or whatever and it saves some download space, so I linked statically... Besides that the nsis patch looks ok, just one question: Why do you sometimes use $DEVDIR and other times .. ? Is it possible to pass variables to makensis? That way we could pass the version info... ${DEVDIR} is a commandline passed variable, it is taken from DEVDIR in makerules/config.mk The reason I use ${DEVDIR} is because those files (or its sources for that matter) aren't contained in the repository (refers to the WZ-devpackage directory). The places where ../ is used is where the file is to be found in the repository or compiled from it. And yes it is indeed possible to pass variables to makensis just use /Dvarname=value. Make sure to include it in quotes as shown though because it otherwise can't deal with spaces at all. Then inside the script refer to that value like this: ${varname}. As for version info you could use this (except the current comment that is): VIProductVersion 9.9.9.9 ; Version number provided here has to be in n.n.n.n format where n is any unsigned integer VIAddVersionKey CompanyName Warzone Resurrection Project VIAddVersionKey FileDescription Warzone 2100 Installer VIAddVersionKey FileVersion TRUNK VIAddVersionKey InternalName Warzone 2100 VIAddVersionKey LegalCopyright© 2006 Warzone Resurrection Project VIAddVersionKey ProductName Warzone 2100 VIAddVersionKey ProductVersionTRUNK VIAddVersionKey Comments LALALALALALALA What do you think about this? http://nsis.sourceforge.net/Version_Info_manipulations_on_compile-time He seems to produce an .rc from an allready compiled .exe, but we allready got the .rc, so we could skip all that reshacker stuff. I still don't exactly know how it works, though. :( --Dennis pgpO8LU3dloH0.pgp Description: PGP signature ___ Warzone-dev mailing list Warzone-dev@gna.org https://mail.gna.org/listinfo/warzone-dev
Re: [Warzone-dev] NSIS installer
Am Mittwoch, 27. Dezember 2006 17:45 schrieb Giel van Schijndel: Giel van Schijndel schreef: Dennis Schridde schreef: Am Mittwoch, 27. Dezember 2006 04:27 schrieb Giel van Schijndel: ${DEVDIR} is a commandline passed variable, it is taken from DEVDIR in makerules/config.mk The reason I use ${DEVDIR} is because those files (or its sources for that matter) aren't contained in the repository (refers to the WZ-devpackage directory). The places where ../ is used is where the file is to be found in the repository or compiled from it. And yes it is indeed possible to pass variables to makensis just use /Dvarname=value. Make sure to include it in quotes as shown though because it otherwise can't deal with spaces at all. Then inside the script refer to that value like this: ${varname}. As for version info you could use this (except the current comment that is): VIProductVersion 9.9.9.9 ; Version number provided here has to be in n.n.n.n format where n is any unsigned integer VIAddVersionKey CompanyName Warzone Resurrection Project VIAddVersionKey FileDescription Warzone 2100 Installer VIAddVersionKey FileVersion TRUNK VIAddVersionKey InternalName Warzone 2100 VIAddVersionKey LegalCopyright© 2006 Warzone Resurrection Project VIAddVersionKey ProductName Warzone 2100 VIAddVersionKey ProductVersionTRUNK VIAddVersionKey Comments LALALALALALALA What do you think about this? http://nsis.sourceforge.net/Version_Info_manipulations_on_compile-time He seems to produce an .rc from an allready compiled .exe, but we allready got the .rc, so we could skip all that reshacker stuff. I still don't exactly know how it works, though. :( Looks very promising, I'll look into it. Now it doesn't look as promising as I initially thought it did. Yes, it does extract the .rc from the .exe using ResHacker this only to do some string processing to retrieve the version number. The second part is used to retrieve a .res file from the .exe (windres produces a .res also if you want by compiling a .rc file). So both of these two things we could do without using ResHacker. What it does then however is using ResHacker to produce the EXE header (contains all the windows resource stuff). And besides that this is a truly unreliable way of incorporating your version information into the final executable. It also depends on an external tool not part of NSIS while NSIS itself can do the job, i.e. using all those VIAddVersionKey statements, and as such adding more complexity to the required toolchain needlessly. :( NSIS doesn't offer a way to extract something from a file? Eg grep-like? --Dennis pgpm9F5FFYecW.pgp Description: PGP signature ___ Warzone-dev mailing list Warzone-dev@gna.org https://mail.gna.org/listinfo/warzone-dev
Re: [Warzone-dev] NSIS installer
Am Mittwoch, 27. Dezember 2006 20:14 schrieb Giel van Schijndel: Dennis Schridde schreef: NSIS doesn't offer a way to extract something from a file? Eg grep-like? No, unless you're willing to write unreasonably large functions yourself (e.g. http://nsis.sourceforge.net/GetBetween:_Get_text_in_between_two_markers_in_ a_file ). And regular expressions aren't supported AFAIK by NSIS But even if you did add such functions, you'd need to interpret the .rc-fileformat which currently is only the job of the compiler. And to my opinion it should stay the job of the compiler and shouldn't become that of us using some unacceptably large NSIS script. Then as a second point, the only information that might change on a regular basis is currently (i.e. in SVN) already defined using command line definitions (i.e. ${VERSION} and ${VERSIONNUM}) so there isn't a requirement for Problem with those is that you can't create VERSIONNUM automatically out of VERSION. This might be suitable for the raw Makefiles, but certainly is not for the automake build... As a workaround I added a --with-installer-version switch to configure. --Dennis pgpxfDzYqgYsW.pgp Description: PGP signature ___ Warzone-dev mailing list Warzone-dev@gna.org https://mail.gna.org/listinfo/warzone-dev
Re: [Warzone-dev] NSIS installer
Dennis Schridde schreef: Am Mittwoch, 27. Dezember 2006 20:14 schrieb Giel van Schijndel: Dennis Schridde schreef: NSIS doesn't offer a way to extract something from a file? Eg grep-like? No, unless you're willing to write unreasonably large functions yourself (e.g. http://nsis.sourceforge.net/GetBetween:_Get_text_in_between_two_markers_in_ a_file ). And regular expressions aren't supported AFAIK by NSIS But even if you did add such functions, you'd need to interpret the .rc-fileformat which currently is only the job of the compiler. And to my opinion it should stay the job of the compiler and shouldn't become that of us using some unacceptably large NSIS script. Then as a second point, the only information that might change on a regular basis is currently (i.e. in SVN) already defined using command line definitions (i.e. ${VERSION} and ${VERSIONNUM}) so there isn't a requirement for Problem with those is that you can't create VERSIONNUM automatically out of VERSION. This might be suitable for the raw Makefiles, but certainly is not for the automake build... As a workaround I added a --with-installer-version switch to configure. Well I suppose you could use an include file in the .rc-file which contains the version numbers, which you would then parse with the above mentioned GetBetween function. Then use those numbers as arguments against VIAddVersionKey. That should be easily implemented. -- Giel signature.asc Description: OpenPGP digital signature ___ Warzone-dev mailing list Warzone-dev@gna.org https://mail.gna.org/listinfo/warzone-dev