moxo
21st October 2003 13:35 UTC
force install dir when a previous installation is finded
Hello
can you help me? i have searched in the forum and in the documentation but i don't find that i want.
i have a two programs who are need to be install in the same path. i install one of this 2 programs, i want my program read a key
readRegStr $R6 HKCU "Software\${COMPANY}" "PathComp" and if is key is configured i want my program use this path (the path appears in directory page but is not possible to modify) but if key is empty, the user can modify the path in directory page.
thanks for your help.
kichik
21st October 2003 14:08 UTC
Use InstallDirRegKey to initially set $INSTDIR to whatever is in that key. If it's empty, copy your default installation directory into $INSTDIR in .onInit and set a variable to a certain vaule. In the show function of the directory selection page enable or disable the directory selection box according to the value of that variable.
To enable/disable the box use:
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $$0 $0 1019
EnableWindow $0 0 # change the last 0 to 1 if you want to enable
The EnableWindow instruction is available only in the latest CVS version. If you're using b3 use the System plug-in instead:
# change the last 0 to 1 to enable
System::Call "user32::EnableWindow(i r0, i 0)"
moxo
21st October 2003 16:45 UTC
!define MUI_LICENSEPAGE
page directory mapage
!define MUI_STARTMENUPAGE
!define MUI_ABORTWARNING
!define MUI_FINISHPAGE
moxo
21st October 2003 16:59 UTC
is it good to put this in script?
i try to use oninit function to initiliaze installdir but i have error
function .oninit
ReadRegStr $R8 HKCU "Software\${COMPANY}" "PathComp"
StrCmp $R8 "" 0 notfirst
InstallDir "$PROGRAMFILES\${COMPANY}\"
InstallDirRegKey HKCU "Software\${COMPANY}\" "PathComp"
goto done
notfirst:
InstallDir $R8
InstallDirRegKey HKCU "Software\${COMPANY}\" "PathComp"
goto done
done:
Functionend
i don't kow what i put in function mapage
!define MUI_LICENSEPAGE
page directory mapage
!define MUI_STARTMENUPAGE
!define MUI_ABORTWARNING
!define MUI_FINISHPAGE
function mapage
System::Call "user32::EnableWindow(i r0, i 0)"
functionend
kichik
21st October 2003 19:26 UTC
InstallDir and InstallDirRegKey can't be used inside functions or section. Use StrCpy $INSTDIR "something" to set $INSTDIR manually.
As for the disabling of the text box, that's not the way to do it. You should put the code in the show function, not the pre function. That's also not the way to define a show function using the MUI. See the MUI readme for more information about page's callbacks functions. You have also copied just part of the disbaling script. That System line is a replacement just for the EnableWindow command, not all of the code.