Hi, i am a newbie on NSIS and also on this forum. The script that i wrote installs a soft in a directory that i choose. Is there a way to find out if the soft is already installed on the computer, before i get to the component page and how to calculate the space required for installation.
Hope i will hear from you soon,
Thanks
Find if a previous soft is installed
11 posts
How about InstallDirRegKey? See NSIS manual,
Required space calculated automatically by the installer on components page and on directory page.
Required space calculated automatically by the installer on components page and on directory page.
thanks i will try
i have done this:
!define company "Home"
!define prodname "TestApp"
!define regkey "Software\${company}\${prodname}"
Section
InstallDirRegKey HKLM "${regkey}"
SectionEnd
Error: command InstallDirRegKey not valid in Section
!define company "Home"
!define prodname "TestApp"
!define regkey "Software\${company}\${prodname}"
Section
InstallDirRegKey HKLM "${regkey}"
SectionEnd
Error: command InstallDirRegKey not valid in Section
then use InstallDirRegKey outside a section!
As described in manual this is an installer attribute, so you need to add it like this e.g.
Name "my app"
OutFile "myapp.exe"
InstallDirRegKey HKLM "Software\NSIS" ""
Name "my app"
OutFile "myapp.exe"
InstallDirRegKey HKLM "Software\NSIS" ""
ok i have done this:
Name "my app"
OutFile "myapp.exe"
InstallDirRegKey HKLM "${regkey}" ""
i tested the installer but what i should do so when i try to use the installer will warn me that i have the soft already installed
Name "my app"
OutFile "myapp.exe"
InstallDirRegKey HKLM "${regkey}" ""
i tested the installer but what i should do so when i try to use the installer will warn me that i have the soft already installed
Provided that ${regkey} is defined properly, installer finds automatically any previous installation.
If you want to pop up a warning or set up another action regarding to that previous installation then,
Function .onInit
ClearErrors
ReadRegStr $0 HKLM "${regkey}" ""
IfErrors done
MessageBox MB_OK "Previous installation detected here $0"
# code here
done:
ClearErrors
# other code here
FunctionEnd
If you want to pop up a warning or set up another action regarding to that previous installation then,
Function .onInit
ClearErrors
ReadRegStr $0 HKLM "${regkey}" ""
IfErrors done
MessageBox MB_OK "Previous installation detected here $0"
# code here
done:
ClearErrors
# other code here
FunctionEnd
i have attached the source...please take a look...i did what you told me to do but has no effect
thanks
thanks
Hopefully this minimal out of script will help you,
!define uninstaller "uninstall.exe"
!define prodname "testapl"
!define company "Home"
!define regkey "Software\${company}\${prodname}"
Outfile 'test.exe'
InstallDir '$PROGRAMFILES\${prodname}'
InstallDirRegKey HKLM "${regkey}" ""
AutoCloseWindow false
ShowInstDetails show
!include "mui.nsh"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
Function .onInit
ClearErrors
ReadRegStr $0 HKLM "${regkey}" ""
IfErrors done
MessageBox MB_OK "Previous installation detected here $0" IDOK
done:
ClearErrors
FunctionEnd
Section
SetOutPath "$INSTDIR"
WriteUninstaller "${uninstaller}"
WriteRegStr HKLM "${regkey}" "" "$INSTDIR"
SectionEnd
Section "Uninstall"
Delete "$INSTDIR\${uninstaller}"
RMDIR "$INSTDIR"
DeleteRegKey HKLM "${regkey}"
SectionEnd
It works...thanks a lot