如何在卸载部分调用nsi函数?

Roa*_*use 2 windows nsis

我有一个带有函数的nsi脚本,该函数返回我试图在卸载部分内调用的输出.不幸的是,当我运行它时,由于我调用此函数的方式,我显然会出错.我的理解是有一种特殊的方法可以在卸载部分调用函数,但我不知道我是怎么想知道是否有人可以帮助我?我的代码看起来像这样:

Function TestFunction
   Push $R0
   Rush $R1
   ;do stuff
   Pop $R!
   Exch $R0
FunctionEnd

!macro TestFunction OUTPUT_VALUE
   Call TestFunction
   Pop `${OUTPUT_VALUE}`
!macroend

!define TestFunction'!insertmacro "TestFunction"' 

; Uninstaller

Section "Uninstall"
  ${TestFunction} $R0
  StrCmp $R0 "Test" istest isnottest 
Run Code Online (Sandbox Code Playgroud)

小智 6

NSIS具有命名条件 - 从卸载程序调用的函数必须具有"un".名字前缀.当你有一些可以从安装程序和卸载程序调用的函数时,这很无聊.为了避免较少的复制过去,经验丰富的人通常使用宏.像这样的东西:

!macro TestFunction UN
Function ${UN}TestFunction
   ;do stuff
FunctionEnd
!macroend
!insertmacro TestFunction "" 
!insertmacro TestFunction "un."
Run Code Online (Sandbox Code Playgroud)

Usings:

Section "Install"
  Call TestFunction
EndSection

Section "Uninstall"
  Call un.TestFuction
SecionEnd
Run Code Online (Sandbox Code Playgroud)


And*_*ers 5

卸载程序功能的名称必须前缀un.

Function un.DoMagic
...
FunctionEnd

Section "un.Main"
Call un.DoMagic
SectionEnd
Run Code Online (Sandbox Code Playgroud)