Я работаю над сценарием, который устанавливает мое приложение, сделанное в электронном формате, и до сих пор, кажется, все работает нормально. Однако есть одна проблема: я смог добавить новую пользовательскую страницу, но она была добавлена до начала установки. Это проблема, потому что эта страница содержит два поля ввода, которые пользователь должен заполнить, а затем предоставленные данные сохраняются в каталоге, где установлено приложение. Но поскольку приложение устанавливается после этого шага, каталог перезаписывается и файл исчезает. Это код:
!include nsDialogs.nsh
!include LogicLib.nsh
XPStyle on
Var Dialog
Var UserLabel
Var UserText
Var UserState
Var PassLabel
Var PassText
Var PassState
Page custom nsDialogsPage nsDialogsPageLeave
Function nsDialogsPage
nsDialogs::Create 1018
Pop $Dialog
${If} $Dialog == error
Abort
${EndIf}
${NSD_CreateLabel} 0 0 100% 12u "Username:"
Pop $UserLabel
${NSD_CreateText} 0 13u 100% 12u $UserState
Pop $UserText
${NSD_CreateLabel} 0 39u 100% 12u "Password:"
Pop $PassLabel
${NSD_CreatePassword} 0 52u 100% 12u $PassState
Pop $PassText
nsDialogs::Show
FunctionEnd
Function nsDialogsPageLeave
${NSD_GetText} $UserText $UserState
${NSD_GetText} $PassText $PassState
${If} $UserState == ""
MessageBox MB_OK "Username is missing."
Abort
${EndIf}
${If} $PassState == ""
MessageBox MB_OK "Password is missing."
Abort
${EndIf}
StrCpy $1 $UserState
StrCpy $2 $PassState
FileOpen $9 $INSTDIR\credentials.txt w
FileWrite $9 "$1:$2"
FileClose $9
SetFileAttributes $INSTDIR\credentials.txt HIDDEN|READONLY
FunctionEnd
Section
SectionEnd
Так что да, лучше бы иметь эту страницу после установки, а не до. Спасибо за все указания, я абсолютно новичок в NSIS, поэтому я понятия не имею, как этого добиться.