Skip to content
⌘ NSIS Forum Archive

Find if a previous soft is installed

11 posts

ichyban#

Find if a previous soft is installed

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
Red Wine#
How about InstallDirRegKey? See NSIS manual,



Required space calculated automatically by the installer on components page and on directory page.
ichyban#
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
Red Wine#
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" ""
ichyban#
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
Red Wine#
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
ichyban#
i have attached the source...please take a look...i did what you told me to do but has no effect

thanks
Red Wine#
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