刚开始使用NSIS作为我的第一个安装程序。找到我需要的一切,只有一件事。我找到了如何编写和创建txt文件但无法找到任何信息是否可以允许用户做一些输入(在安装程序中打开一个表单)然后将插入的数据写入txt文件。
现在我能够从nsDialog写一个输入,这是代码:
nsDialogs::Create 1018
Pop $Dialog
${NSD_CreateText} 10% 20u 80% 12u "Insert the API KEY"
Pop $Text
nsDialogs::Show
${NSD_GetText} $Text $0
MessageBox MB_OK "You typed:$\n$\n$0"
FileOpen $0 "$DESKTOP\Hello_world.txt" w
FileWrite $0 $Text
FileClose $0
然而,问题是在Hello_world.txt中写入的数据是一些随机数字,现在我真的不明白这些数字是什么,不应该$ Text是一个字符串?
对话框(及其子控件)仅存在于nsDialogs::Create
和nsDialogs::Show
之间。您可以获得随机信息,因为您正在尝试从不再存在的内容中读取内容。此外,在您的示例中,$Text
是编辑控件句柄(HWND),而不是文本,在您的情况下,您的文本将位于$0
中。
要完成并显示对话框,您必须调用
nsDialogs::Show
。在用户单击“下一步”,“后退”或“取消”之前,此功能不会返回
您应该在页面的离开回调中读取用户输入:
Page Custom MyPageCreate MyPageLeave
Page Directory
Page InstFiles
Var MyTextControlHandle
Function MyPageCreate
nsDialogs::Create 1018
Pop $0
${NSD_CreateText} 10% 20u 80% 12u "Insert the API KEY"
Pop $MyTextControlHandle
nsDialogs::Show
; $MyTextControlHandle is no longer valid here
FunctionEnd
Function MyPageLeave
${NSD_GetText} $MyTextControlHandle $0 ; Get text from $MyTextControlHandle and store in $0
MessageBox MB_OK "You typed:$\n$\n$0"
; Save $0 somewhere if desired
FunctionEnd