Nsis脚本识别以前的安装目录



我正在尝试使用注册表识别nsis脚本语言中的先前安装目录。

我在这个注册表

中找到了一个卸载条目
HKLM "SOFTWAREMicrosoftWindowsCurrentVersionUninstallPaperTrlQBDConnector" "UninstallString"

但是注册表值是xxxxxxxPaperTrlQBDConnector uninstall .exe

我想把不需要uninstall.exe的路径解压到一个变量。

Function PreDirCheck
# discover if QBD Connector is already installed
ClearErrors

SetRegView 64
ClearErrors
;ReadRegStr $previous_install_dir HKLM "SOFTWAREMicrosoftWindowsCurrentVersionUninstallPaperTrlQBDConnector" "PreDir"
;${if} $previous_install_dir == 0
ReadRegStr $previous_install_dir HKLM "SOFTWAREMicrosoftWindowsCurrentVersionUninstallPaperTrlQBDConnector" "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

我尝试了这段代码,但它给出了路径

的uninstall .exe变量值。

InstallDirRegKey知道如何删除。exe,如果你指向你的UninstallString值。然而,控制它的reg-view是不可能的。

你也可以自己删除最后一个path组件:

!include "FileFunc.nsh"
Function .onInit
ReadRegStr $0 HK.. ...
${GetParent} "$0" $1
MessageBox MB_OK $1
FunctionEnd

最新更新