系统::在NSIS卸载期间调用外部.dll
在安装应用程序的过程中,我安装了一个库,用于将各种函数导出到$INSTDIR。在卸载期间,我想调用此库中的函数来执行任务并返回。根据我到目前为止的尝试,对函数的调用似乎失败了,我总是返回“error”作为$0 这是我在卸载脚本中运行的内容:系统::在NSIS卸载期间调用外部.dll,nsis,Nsis,在安装应用程序的过程中,我安装了一个库,用于将各种函数导出到$INSTDIR。在卸载期间,我想调用此库中的函数来执行任务并返回。根据我到目前为止的尝试,对函数的调用似乎失败了,我总是返回“error”作为$0 这是我在卸载脚本中运行的内容: SetPluginUnload alwaysoff SetOutPath $INSTDIR System::Call "myutils::uninstalling() i.r0" DetailPrint 'RETURN CODE: "$0"
SetPluginUnload alwaysoff
SetOutPath $INSTDIR
System::Call "myutils::uninstalling() i.r0"
DetailPrint 'RETURN CODE: "$0"'
SetPluginUnload manual
我发现的几个示例将.dll复制到一个临时目录,然后运行System:Call,但库已经在$INSTDIR中。想法?不是NSIS代码的问题,该函数需要导出到.def文件中,这样NSIS就可以在无装饰的情况下解决它。不是NSIS代码的问题,该函数需要导出到.def文件中,这样NSIS就可以在无装饰的情况下解决它。此外,对内核32的调用非常有效,所以我猜这是个愚蠢的错误。你试过临时目录方法吗?可能由于任何原因,您没有在常规目录中运行dll的权限。你确定你的函数输入/返回签名是正确的吗?函数原型是“int u stdcall uninstalling();”还是cdecl?另外,对kernel32的调用也很有效,所以我猜这是个愚蠢的错误。你尝试过临时目录方法吗?可能由于任何原因,您没有在常规目录中运行dll的权限。您是否确保您的函数输入/返回签名正确?函数原型是“int u stdcall uninstalling();”还是cdecl?