【发布时间】:2019-06-19 04:50:59
【问题描述】:
我正在编写一个脚本,该脚本正在安装我用电子制作的应用程序,到目前为止一切似乎都运行良好。但是有一个问题,我能够添加新的自定义页面,但它是在安装之前添加的。这是一个问题,因为此页面包含用户必须填写的两个输入字段,然后提供的数据存储在安装应用程序的目录中。但是因为在这一步之后安装了应用程序,所以目录被覆盖并且文件消失了。这是代码:
!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 完全陌生,所以我不知道如何完成。
【问题讨论】:
-
您的示例代码缺少所有其他页面行,您的问题是关于页面顺序!
-
我试图放置其他页面,但随后它们被执行了两次,例如,如果您放置
Page InstFiles,它将安装应用程序,然后再次触发默认安装程序并再次安装,可能是这样配置的在电子制造商中,我不知道为什么会这样。
标签: nsis electron-builder