Archive: Installation directory


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

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

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


Function .onInit
ReadRegStr $0 HKLM "Software\Microsoft\Microsoft Games\Flight Simulator\9.0\" "EXE Path"
StrCpy $INSTDIR "$0\Addon Scenery\FreeZ"
FunctionEnd

Thanks, works pretty good!! :)


Kind regards

Marc Laederach