NSIS 安装程序。为什么我收到警告“!详细:弹出失败”?

NSIS installer. Why do I get the warning "!verbose: pop failed"?

我正在使用旧版本的 NSIS 脚本为更新的软件版本创建一个新的安装程序。我按原样编译旧脚本,它弹出 2 个警告:

!verbose: Pop failed, stack is empty (macro:MUI_UNGETLANGUAGE:2)
!verbose: Pop failed, stack is empty (macro:MUI_UNGETLANGUAGE:24)

这些警告提示我的脚本是这样的(我收到警告的行是!verbose pop):

!macro MUI_UNGETLANGUAGE

  !verbose pop

  !ifdef MUI_LANGDLL_REGISTRY_ROOT & MUI_LANGDLL_REGISTRY_KEY & MUI_LANGDLL_REGISTRY_VALUENAME

    ReadRegStr $MUI_TEMP1 "${MUI_LANGDLL_REGISTRY_ROOT}" "${MUI_LANGDLL_REGISTRY_KEY}" "${MUI_LANGDLL_REGISTRY_VALUENAME}"
    StrCmp $MUI_TEMP1 "" 0 mui.ungetlanguage_setlang

  !endif

  !insertmacro MUI_LANGDLL_DISPLAY

  !ifdef MUI_LANGDLL_REGISTRY_ROOT & MUI_LANGDLL_REGISTRY_KEY & MUI_LANGDLL_REGISTRY_VALUENAME

    Goto mui.ungetlanguage_done

    mui.ungetlanguage_setlang:
      StrCpy $LANGUAGE $MUI_TEMP1

    mui.ungetlanguage_done:

  !endif

  !verbose pop

!macroend

这些警告值得担心吗?如果是,我该怎么办?提前谢谢你。

这看起来像是 NSIS 中的错误,第一个 pop 应该是推送。

您可以通过先手动推送隐藏错误来修复它:

!verbose push
!verbose push
!insertmacro MUI_UNGETLANGUAGE

或通过将第一个 pop 替换为以下内容来修复 .nsh 文件:

!verbose push
!verbose ${MUI_VERBOSE}

警告没什么大不了的,它可能会以意想不到的方式影响编译器文本输出,但对生成的安装程序没有影响。