- NSIS Discussion
- Find if a previous soft is installed
Archive: Find if a previous soft is installed
ichyban
19th March 2007 13:47 UTC
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
19th March 2007 14:23 UTC
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.
ichyban
19th March 2007 15:48 UTC
thanks i will try
ichyban
19th March 2007 16:13 UTC
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
Comm@nder21
19th March 2007 16:24 UTC
then use InstallDirRegKey outside a section!
Red Wine
19th March 2007 16:30 UTC
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
20th March 2007 14:01 UTC
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
20th March 2007 14:48 UTC
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
20th March 2007 15:21 UTC
i have attached the source...please take a look...i did what you told me to do but has no effect
thanks
Red Wine
20th March 2007 15:36 UTC
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
ichyban
20th March 2007 16:14 UTC
It works...thanks a lot