создать пользовательскую страницу после завершения установки - PullRequest
0 голосов
/ 25 января 2019

Я работаю над сценарием, который устанавливает мое приложение, сделанное в электронном формате, и до сих пор, кажется, все работает нормально. Однако есть одна проблема: я смог добавить новую пользовательскую страницу, но она была добавлена ​​до начала установки. Это проблема, потому что эта страница содержит два поля ввода, которые пользователь должен заполнить, а затем предоставленные данные сохраняются в каталоге, где установлено приложение. Но поскольку приложение устанавливается после этого шага, каталог перезаписывается и файл исчезает. Это код:

!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, поэтому я понятия не имею, как этого добиться.

1 Ответ

0 голосов
/ 25 января 2019

Страницы отображаются в том же порядке, в каком они отображаются в вашем исходном файле, поэтому вы можете просто сделать:

Page Directory
Page InstFiles
Page Custom MyPage

В идеале вы должны собрать необходимую информацию перед этапом установки (InstFiles), и вы уже почти там. Ваша пользовательская страница хранит информацию в глобальных переменных, все, что вам нужно сделать, это переместить операции File* в Section. Если вы сделаете это таким образом, ваша пользовательская страница может появиться в любое время до страницы InstFiles.

...