Kollw!tz
18th August 2005 10:06 UTC
changing output structure at runtime
Hi there,
I am in need of maybe an uncommon feature: I want to skip some files from unpacking that are alredy packed (in installer file), and, if possible, even change their relative location.
I know, I can unpack them all and, after that, delete and copy them as much as I want, but why first unpack them if they are never needed?
What files are going to be unpacked is defined by the chosen language, so the component selection makes no sense here.
thanks in advance,
oli
Afrow UK
18th August 2005 10:24 UTC
Just jump over them if something is true, e.g.
StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +3
File "/oname=$INSTDIR\Lang\English.lng" "Lang\English.lng"
Goto End
StrCmp $LANGUAGE ${LANG_FRENCH} 0 +3
File "/oname=$INSTDIR\Lang\French.lng" "Lang\French.lng"
Goto End
End:
Or you could use LogicLib.nsh to make it even cleaner with ${If} statements.
-Stu
Kollw!tz
18th August 2005 10:36 UTC
yeah, all right, but how is that possible?
I mean, it looks like this:
# Installer sections
Section -Main SEC0000
SetOutPath $INSTDIR
SetOverwrite on
File /r "${AppPath}"
File /r "${LanguagePath}"
CreateShortCut bla.lnk
WriteRegStr HKLM "${REGKEY}\Components" Main 1
SectionEnd
and as far as I understand nsis the above section packs and unpacks AppPath and LangPath to $INSTDIR, right? and what I want is to gain access to components in $LangPath witch contains of the subdir \Fench and \English etc.
And in \French etc. there are a hole bunch of files, so somthing like \oname would be very unpracticle.
Kollw!tz
18th August 2005 10:48 UTC
Well, I will try with a root for every single language, that should do the trick
thanks folks!