MarcL
23rd February 2008 00:50 UTC
Installation directory
Hi all
I have searched through the forum, asked google and read through the NSIS User Manual but couldn't find an answer. But I have to warn you, I'm not a software developer, I only have a bit experience with C and HTML.
I have a little problem with the directory of my installation. I read out a path and would like to add a sting to the installation path.
When I try it with Installdirregkey, I can't use variables and therefore I'm not able to add anything to the install path.
If I use ReadRegStr, I can add it to the variable $0, but I cant get the content of it outside the function:
Function .onInit
ReadRegStr $0 HKLM "Software\Microsoft\Microsoft Games\Flight Simulator\9.0\" "EXE Path"
FunctionEnd
InstallDir $0
I get a blank destination back, and not the Path I would like to have. If I put in a messagebox in the function, it works fine.
I'm pretty sure it's a silly question, but actually I'm really blocked.
Kind regards
Marc Laederach
Mr Inches
23rd February 2008 01:40 UTC
You should use variables to preserve values between functions and sections.
For what you are trying to do, you can use a user defined one or the built-in INSTDIR variable.
For example:
Function .onInit
ReadRegStr $INSTDIR HKLM "Software\Microsoft\Microsoft Games\Flight Simulator\9.0\" "EXE Path"
FunctionEnd
; INSTDIR should still contain the value set in .onInit unless the user changed in a directory page.
Section Main
DetailPrint "$INSTDIR"
SectionEnd
OR
Var MyInstallDir
Function .onInit
ReadRegStr $MyInstallDir HKLM "Software\Microsoft\Microsoft Games\Flight Simulator\9.0\" "EXE Path"
FunctionEnd
Section Main
InstallDir $MyInstallDir
DetailPrint "$INSTDIR"
SectionEnd
Duncan
MarcL
23rd February 2008 02:06 UTC
Hi Duncan
Thank you very much for your help, you could solve one of my problems! I forgot to write the string I want to add to the path I read out from the registry: The path should be "$INSTDIR\Addon Scenery\FreeZ", so I should get $INSTDIR from the registry and add "\Addon Scenery\FreeZ" to it, but it doesn't work. Perhaps it has to do something with the order?
Kind regards
Marc Laederach
Red Wine
23rd February 2008 09:09 UTC
Function .onInit
ReadRegStr $0 HKLM "Software\Microsoft\Microsoft Games\Flight Simulator\9.0\" "EXE Path"
StrCpy $INSTDIR "$0\Addon Scenery\FreeZ"
FunctionEnd
MarcL
23rd February 2008 18:39 UTC
Thanks, works pretty good!! :)
Kind regards
Marc Laederach