我正在尝试使用注册表识别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