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

时间:2018-09-17 08:41:08

标签: installer nsis

刚开始在我的第一个安装程序中使用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不应该是字符串吗?

1 个答案:

答案 0 :(得分: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