调用必须与以"un"开头的函数名一起使用.在卸载部分

Won*_*ger 4 nsis uninstall function

...
!include "nsDialogs.nsh"
!include "MUI2.nsh"
!include "LogicLib.nsh"
!include "XML.nsh"
  !insertmacro "UpdateXml"
...
!insertmacro MUI_UNPAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt"
UninstPage custom un.PageReinstall
!insertmacro MUI_UNPAGE_CONFIRM
...

Function un.PageReinstall
...
${UpdateXml} "http://127.0.0.1/123.xml" "/XML/A" $321 ; line 232 
...
FunctionEnd
Run Code Online (Sandbox Code Playgroud)

NSIS日志:

!insertmacro:UpdateXmlCall Call必须与以"un"开头的函数名一起使用.在卸载部分.用法:调用function_name | [:label_name] macroline上的宏UpdateXmlCall出错5第232行脚本"G:\ Basic.nsi"出错 - 中止创建过程

怎么了?

Sek*_*eki 9

卸载程序使用的函数必须以前缀为前缀un.,宏也是如此.

因此,如果您正在使用宏并希望能够从安装程序和卸载程序中使用它,则必须将其插入2次(一个用于,另一个没有un.前缀).

在脚本开头添加或替换!insertmacro "UpdateXml"by !insertmacro un.UpdateXml应解决问题(前提是un.UpdateXml宏已定义xml.nsh).

  • 但它仍然无法编写出好的代码,因为 UpdateXml/un.UpdateXml 无法调用另一个宏。我很沮丧! (2认同)