I'm a newbie to NSIS. I was using another installer before. Overall I'm quite pleased with it. I'm still finishing up my new installer but it looks like it will be about 30% smaller than my old one (VISE). It also looks a whole lot nicer. Thanks go out to all that work on this project.
That said, I do find the functionality of the File inscruction a little simplistic. To register a DLL which probably most installs need to do, we have to use a macro (UpgradeDll, which only works on the CVS code, not the latest beta). Wouldn't it be cleaner to have syntax such as this?:
In my opinion, pretty much every file needs to be replaced even if in use, not just registerable DLLs. I don't want my installer not to upgrade a file just because it's in use. So instead of ever using File I always have to use:
SetOverwrite ifnewerversion ;note: *ifnewerversion*, not ifnewer
File myfile.dll
That makes the installer grow by chunks for every file since we are including the macro for each file.
!define UPGRADEDLL_NOREGISTER
!insertmacro UpgradeDLL myfile.exe $INSTDIR\myfile.exe $SYSDIR
!undef UPGRADEDLL_NOREGISTER
Sorry for the long post but it seems like this one change would go a long way for easier/smaller scripts that yield smaller installers.
All the best,
Santiago