- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 nsDialogs 在我的 nsis 脚本中创建一个安装后配置页面。我用于收集输入和执行配置的脚本可以正常工作,但是完成后我从未看到完成/关闭/退出按钮。目前我的页面声明如下:
Page directory
Page instfiles
Page custom nsDialogsPage nsDialogsPageLeave
如何在 nsDialogsPageLeave 执行后显示完成/退出/完成按钮?
最佳答案
经典的 NSIS UI 没有完成页面,instfiles 页面通常是最后一页,在所有部分执行后它会显示一个“完成按钮”。如果您想提供自己的完成页面,可以使用 SendMessage $hwndButton ${WM_SETTEXT} 0 "STR:$(^CloseBtn)"
将任何按钮的文本设置为相同的字符串。
大多数安装程序在 instfiles 页面之前请求所需的信息,如果您不能这样做,那么您可能需要使用 Modern UI ,它将为您提供一个完成页面:
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
Page custom nsDialogsPage nsDialogsPageLeave
!insertmacro MUI_PAGE_FINISH
如果你想要两页,我有点不清楚;输入页面,然后是完成页面或组合的输入/完成页面。组合页面有点奇怪,但它是可能的:
!define AppName "Test"
Name "${AppName}"
Outfile "${AppName} setup.exe"
InstallDir $temp
!include LogicLib.nsh
!include WinMessages.nsh
!include nsDialogs.nsh
Var MyEndConfigPageStage
Page Directory
Page InstFiles
Page Custom MyEndConfigPageCreate MyEndConfigPageLeave /EnableCancel
Function MyEndConfigPageCreate
StrCpy $MyEndConfigPageStage 0
GetDlgItem $0 $hwndparent 1
SendMessage $0 ${WM_SETTEXT} 0 "STR:&Apply"
nsDialogs::Create 1018
Pop $0
${NSD_CreateCheckBox} 0 13u 100% -13u "FooBar"
Pop $1
nsDialogs::Show
FunctionEnd
Function MyEndConfigPageLeave
${If} $MyEndConfigPageStage > 0
Return
${EndIf}
${NSD_GetState} $1 $2
ClearErrors
WriteIniStr "$instdir\settings.ini" Dummy "FooBar" $2
${If} ${Errors}
MessageBox mb_iconstop "Unable to apply settings!"
Abort
${EndIf}
IntOp $MyEndConfigPageStage $MyEndConfigPageStage + 1
GetDlgItem $0 $hwndparent 1
SendMessage $0 ${WM_SETTEXT} 0 "STR:$(^CloseBtn)"
GetDlgItem $0 $hwndparent 2
EnableWindow $0 0 ;Disable cancel
EnableWindow $1 0 ;Disable the checkbox
Abort
FunctionEnd
Section
SectionEnd
关于nsis - 如何在 nsDialogs 页面后获得完成按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9168084/
我想知道是否有任何方法可以在 nsDialog::show 之后调用函数。 我的情况是一个自定义页面,需要在 nsDialog 显示后运行 http get 请求。 Function cust
我想为我的安装程序创建一个进度条,它将显示我的安装过程的进度。我知道 nsDialogs 中的 ${NSD_CreateProgressBar} 命令可以在 nsis 脚本中创建进度条。但我不知道如何
我正在尝试使用 nsDialogs 在我的 nsis 脚本中创建一个安装后配置页面。我用于收集输入和执行配置的脚本可以正常工作,但是完成后我从未看到完成/关闭/退出按钮。目前我的页面声明如下: Pag
我是一名优秀的程序员,十分优秀!