2 つの MUI_PAGE_DIRECTORY ページがあります。1 つ目は、入力されたデータをデフォルトの $INSTDIR に保存します。私がやりたいことは、$INSTDIR の値を定義済みの var $DataDir にコピーして、2 番目のディレクトリ ページが表示される前に、$DataDir が $INSTDIR\Data になるようにすることです。2 ページ目が表示されたら、デフォルト値を $INSTDIR\Data にしたいと思います。
これは可能ですか?
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
何を達成しようとしていますか?
一部のファイルを 2 つの別々の場所にインストールする場合は、MUI_PAGE_DIRECTORY とカスタム nsDialogs ページ (フォルダーの参照ボタン付き) を使用して、ユーザーが 2 つのディレクトリを選択できるようにします。
場所が常に $INSTDIR で、2 番目がその内部 ($INSTDIR\some\data\path) の場合、内部パスを $INSTDIR に追加するだけで済みます。ダイアログを 2 回表示してパスを 2 回選択する必要はありません。