I am trying to recognized the previous installation directory in nsis scripting language using registry.
I found a entry for uninstollation in this registry
HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PaperTrlQBDConnector" "UninstallString"
but the registry value is \xxx\xxxx\PaperTrlQBDConnector\unistall.exe
i want to extract the path without uninstall.exe to a variable.
Function PreDirCheck
# discover if QBD Connector is already installed
ClearErrors
SetRegView 64
ClearErrors
;ReadRegStr $previous_install_dir HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PaperTrlQBDConnector" "PreDir"
;${if} $previous_install_dir == 0
ReadRegStr $previous_install_dir HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PaperTrlQBDConnector" "UninstallString"
;${Endif}
IfErrors done
;sectionsetflags ${sec1} 0
SetAutoClose false
strcpy $INSTDIR $previous_install_dir
MessageBox MB_ICONQUESTION|MB_YesNO|MB_DEFBUTTON2 "Detected previous version in Directory $previous_install_dir $\n Click Yes To update in the existing directory $\n Click No to completely remove PaperTrl SyncManager and install to a new location?" IDYes lbl_abort IDNo lbl_un
lbl_abort:
sectionsetflags ${sec2} 0
Abort ;skip page
lbl_un:
!insertmacro UninstallExisting
sectionsetflags ${sec2} 1
done:
SetAutoClose false
;!insertmacro MUI_PAGE_DIRECTORY
sectionsetflags ${sec2} 1
FunctionEnd
i tried this code but it gives the variable value with the unistall.exe for the path
InstallDirRegKey
knows how to remove the.exe if you point it to your UninstallString value. Controlling its reg-view however is not possible.
You can also remove the last path component yourself:
!include "FileFunc.nsh"
Function .onInit
ReadRegStr $0 HK.. ...
${GetParent} "$0" $1
MessageBox MB_OK $1
FunctionEnd
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.