0

2 つの MUI_PAGE_DIRECTORY ページがあります。1 つ目は、入力されたデータをデフォルトの $INSTDIR に保存します。私がやりたいことは、$INSTDIR の値を定義済みの var $DataDir にコピーして、2 番目のディレクトリ ページが表示される前に、$DataDir が $INSTDIR\Data になるようにすることです。2 ページ目が表示されたら、デフォルト値を $INSTDIR\Data にしたいと思います。

これは可能ですか?

4

2 に答える 2

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
于 2014-04-10T16:33:15.743 に答える
1

何を達成しようとしていますか?

一部のファイルを 2 つの別々の場所にインストールする場合は、MUI_PAGE_DIRECTORY とカスタム nsDialogs ページ (フォルダーの参照ボタン付き) を使用して、ユーザーが 2 つのディレクトリを選択できるようにします。

場所が常に $INSTDIR で、2 番目がその内部 ($INSTDIR\some\data\path) の場合、内部パスを $INSTDIR に追加するだけで済みます。ダイアログを 2 回表示してパスを 2 回選択する必要はありません。

于 2014-04-10T05:56:08.610 に答える