使用NSIS,我可以在MUI_页面\目录页面之间共享值吗?

使用NSIS,我可以在MUI_页面\目录页面之间共享值吗?,nsis,nsis-mui,Nsis,Nsis Mui,我有两个MUI_PAGE_目录页。第一个将输入的数据存储到默认的$INSTDIR。我想做的是将$INSTDIR中的值复制到定义的var$DataDir,以便在显示第二个目录页之前,$DataDir变成$INSTDIR\Data。显示第二页时,我希望默认值为$INSTDIR\Data 这可能吗?你想实现什么 如果要将某些文件安装到两个不同的位置,请使用MUI_页面目录和自定义nsDialogs页面(带有“浏览文件夹”按钮),以便用户可以选择两个目录 如果您的位置始终为$INSTDIR,而第二个位置

我有两个MUI_PAGE_目录页。第一个将输入的数据存储到默认的$INSTDIR。我想做的是将$INSTDIR中的值复制到定义的var$DataDir,以便在显示第二个目录页之前,$DataDir变成$INSTDIR\Data。显示第二页时,我希望默认值为$INSTDIR\Data


这可能吗?

你想实现什么

如果要将某些文件安装到两个不同的位置,请使用MUI_页面目录和自定义nsDialogs页面(带有“浏览文件夹”按钮),以便用户可以选择两个目录


如果您的位置始终为$INSTDIR,而第二个位置在其中的某个位置($INSTDIR\some\data\path),则您只需将内部路径附加到$INSTDIR-无需显示对话框两次并选择路径两次。

宏MUI\u页面\u自定义函数\u离开就是我所需要的。谢谢大家!!
InstallDir $ProgramFiles\MyApp

Var DataDir
!include MUI2.nsh
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE InstDirPageLeave
!insertmacro MUI_PAGE_DIRECTORY
!define MUI_DIRECTORYPAGE_VARIABLE $DataDir
!define MUI_DIRECTORYPAGE_TEXT_TOP "Choose Data directory for bla bla bla..."
!define MUI_DIRECTORYPAGE_TEXT_DESTINATION "Data Directory:"
!define MUI_PAGE_CUSTOMFUNCTION_SHOW DataDirShowPage
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE English

Function InstDirPageLeave
StrCpy $DataDir "$InstDir\Data"
FunctionEnd

Function DataDirShowPage
!insertmacro MUI_HEADER_TEXT "Foo" "Bar"
FunctionEnd

Section
DetailPrint $InstDir
DetailPrint $DataDir
SectionEnd