gpt4 book ai didi

nsis - 按下后退按钮时保留自定义页面上的数据

转载 作者:行者123 更新时间:2023-12-04 10:58:55 34 4
gpt4 key购买 nike

NSIS 脚本中的自定义页面是否有任何方法可以在按下后退按钮时(安装程序运行时)保留用户输入的数据?

最佳答案

有几种方法可以做到这一点。无论哪种方式,您都需要将数据存储在全局变量中。

1) 使用“离开”功能。

Page custom EnterCustom LeaveCustom

; Create two variables for each value/widget pair
Var Text
Var TextWidget
Var Check
Var CheckWidget

Function EnterCustom
nsDialogs::Create 1018
Pop $0

${NSD_CreateText} 0 0 80u 12u $Text
Pop $TextWidget

${NSD_CreateCheckBox} 0 26u 80u 12u "Check this box"
Pop $CheckWidget
${NSD_SetState} $CheckWidget $Check

nsDialogs::Show
FunctionEnd

Function LeaveCustom
${NSD_GetText} $TextWidget $Text
${NSD_GetState} $CheckWidget $Check
FunctionEnd

此方法的唯一问题是,只有在您点击下一个按钮时才会调用 LeaveCustom。因此,如果您编辑字段然后单击后退按钮,您的更改将丢失。但是,如果您前进然后返回,则会保存更改。

2) 使用 OnChange 回调。

这有点复杂,但解决了以前方法的问题。
Page custom EnterCustom

Var Initialized
; Create two variables for each value/widget pair
Var Text
Var TextWidget
Var Check
Var CheckWidget

Function EnterCustom
nsDialogs::Create 1018
Pop $0

${If} $Initialized != "True"
; Set defaults for all your values here
StrCpy $Text "Initial Value"
StrCpy $Check ${BST_UNCHECKED}
StrCpy $Initialized "True"
${EndIf}

; Create and configure all of your widgets
${NSD_CreateText} 0 0 80u 12u $Text
Pop $TextWidget
${NSD_OnChange} $TextWidget OnTextChange

${NSD_CreateCheckBox} 0 26u 80u 12u "Check this box"
Pop $CheckWidget
${NSD_SetState} $CheckWidget $Check
${NSD_OnClick} $CheckWidget OnCheckClick

nsDialogs::Show
FunctionEnd

; Create a callback function for each Widget
Function OnTextChange
Pop $0 ; Widget handle is on stack
${NSD_GetText} $TextWidget $Text
FunctionEnd

Function OnCheckClick
Pop $0 ; Widget handle is on stack
${NSD_GetState} $CheckWidget $Check
FunctionEnd

一些小部件,例如RadioButtons 和 CheckBoxes,请改用 OnClick 函数。 ComboBox 也不适用于此方法。但是,似乎没有记录的 DropList 通常可以替换它并且工作正常。

单选按钮也有点棘手,因为只调用所选按钮的点击回调。我通过更新每个单选按钮点击回调中的所有单选按钮值来解决这个问题。

凌乱/乏味,但它的工作原理。

关于nsis - 按下后退按钮时保留自定义页面上的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2069850/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com