Archive: Find if a previous soft is installed


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


How about InstallDirRegKey? See NSIS manual,

http://nsis.sourceforge.net/Docs/Chapter4.html#4.8.1.22

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


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" ""


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


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


i have attached the source...please take a look...i did what you told me to do but has no effect

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