NSIS。创建填写表单以将插入的数据写入txt文件

问题描述 投票:0回答:1

刚开始使用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是一个字符串?

installer nsis
1个回答
1
投票

对话框(及其子控件)仅存在于nsDialogs::CreatensDialogs::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
© www.soinside.com 2019 - 2024. All rights reserved.