刚开始在我的第一个安装程序中使用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不应该是字符串吗?
答案 0 :(得分:1)
对话框(及其子控件)仅存在于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