我有两个MUI_PAGE_DIRECTORY页面。第一个将输入的数据存储到默认值$ INSTDIR。我想要做的是将$ INSTDIR中的值复制到定义的var $ DataDir,以便在显示第二个目录页面之前,$ DataDir变为$ INSTDIR \ Data。当显示第二页时,我希望默认值为$ INSTDIR \ Data。
这可能吗?
答案 0 :(得分:1)
你想要达到什么目标?
如果要将一些文件安装到两个单独的位置,请使用MUI_PAGE_DIRECTORY和自定义nsDialogs页面(使用浏览文件夹按钮),这样用户就可以选择两个目录。
如果您的位置始终是$ INSTDIR,其中第二个位于其中($ INSTDIR \ some \ data \ path),那么您只需将内部路径追加到$ INSTDIR - 无需显示对话框两次并选择路径两次。
答案 1 :(得分:1)
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