NSIS安装程序。为什么我会收到“!verbose:pop failed”的警告?

时间:2017-01-20 15:25:01

标签: windows-installer nsis

我正在使用旧版本的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

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

1 个答案:

答案 0 :(得分:0)

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

您可以先手动按下以隐藏错误来修复它:

!verbose push
!verbose push
!insertmacro MUI_UNGETLANGUAGE

或通过将第一个pop替换为:

来修复.nsh文件
!verbose push
!verbose ${MUI_VERBOSE}

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