使用NSIS,我可以在MUI_PAGE_DIRECTORY页面之间共享值吗?

时间:2014-04-10 01:20:45

标签: nsis mui

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

这可能吗?

2 个答案:

答案 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