如何在电子构建的应用程序中启用取消按钮



我正在处理一个通过电子生成器构建的电子应用程序。当我生成安装程序并开始安装时,我看到取消按钮被禁用。

我查阅了一些电子生成器文档,并在谷歌上搜索了几次,但这里似乎一片空白。

edit:我发现我可以使用build/installer.nsh来实际修改UI元素,现在我只是想知道,我如何访问按钮来启用/禁用它,我看到的例子使用.ini文件来存储选项或类似的东西,但我得到了使用nsDialogs的建议。

nsDialogs是我已经很容易访问的东西吗?还是我需要将一些东西导入到installer.nsh文件中才能使用nsDialogs?

因此,我如何访问nsDialogs中的取消按钮?

是否有一个可配置的值使我能够…启用取消按钮,以便用户可以在安装过程中选择取消?

谢谢!

NSIS安装程序不支持在您进入InstFiles页面(或之后的任何页面(时取消安装。这是由于脚本语言的工作方式而设计的。

如果你不介意黑客攻击,你可以在用户在安装阶段点击取消时调用卸载程序:

Var Cancel
!include LogicLib.nsh
!include WinMessages.nsh
Function .onUserAbort
StrCmp $Cancel "" +3
IntOp $Cancel $Cancel | 1
Abort
FunctionEnd
!macro FakeWork c
!if "${c}" < 10
Sleep 333
DetailPrint .
!define /redef /math c "${c}" + 1
!insertmacro ${__MACRO__} "${c}"
!endif
!macroend
Section Uninstall
!insertmacro FakeWork 0
Delete "$InstDirUninst.exe"
RMDir "$InstDir"
SectionEnd
Function CheckCancel
${If} $Cancel = 1
IntOp $Cancel $Cancel + 1
GetDlgItem $0 $hwndParent 2
EnableWindow $0 0
DetailPrint "Canceling..."
SetDetailsPrint none
ExecWait '"$InstDirUninst.exe" /S _?=$InstDir'
Delete "$InstDirUninst.exe"
RMDir "$InstDir"
SetDetailsPrint both
Quit
${EndIf}
FunctionEnd

Section
SetOutPath $InstDir
WriteUninstaller "$InstDirUninst.exe"
StrCpy $Cancel 0 ; Allow special cancel mode
GetDlgItem $0 $hwndParent 2
EnableWindow $0 1 ; Enable cancel button
!insertmacro FakeWork 0 ; Replace these with File or other instructions
Call CheckCancel
!insertmacro FakeWork 0
Call CheckCancel
!insertmacro FakeWork 0
Call CheckCancel
StrCpy $Cancel "" ; We are done, ignore special cancel mode
SectionEnd

(我不知道如何将其与电子构建器集成,对不起(

如果您想要一个合适的回滚安装程序,请尝试Inno Setup或WiX(MSI(。

相关内容

  • 没有找到相关文章

最新更新