复制所有文件后,可能会有一个 NSIS 回调函数



试图优化我的 MUI 2 NSIS 设置,其中我在 .onInstSuccess 回调函数中执行一些ExecWait调用,我正在搜索文档以找到调用的回调:

  • 文件全部复制后 - 和-
  • 在向导页从"文件复制"页切换到"完成页"之前。

不幸的是,我没有发现这样的回调。

因此,我的问题是:

是否可以在复制文件

之后和向导页从文件复制页切换之前执行一些自定义处理?

使用 MUI_PAGE_CUSTOMFUNCTION_LEAVE 就可以了。这实际上取决于您是否希望在日志中打印"已完成"之前或之后执行操作。对于前者,您只需将代码粘贴在最后一部分中:

Section
SetOutPath $Instdir
File "Foo"
File "Bar"
ExecWait '"$Instdirdofinalthing.exe" /blah'
SectionEnd

Section
SetOutPath $Instdir
File "Foo"
File "Bar"
SectionEnd
Section -post
ExecWait '"$Instdirdofinalthing.exe" /blah'
SectionEnd

这当然将成为进度条的一部分,除非您使用setdetailsprint,否则将打印到日志中......

刚刚自己找到了解决方案(不过,也许安德斯会有一个更好的解决方案):

MUI 2 允许定义自定义回调函数,MUI_PAGE_CUSTOMFUNCTION_LEAVE所以我在定义

!insertmacro MUI_PAGE_INSTFILES

注册自定义函数。所以我的 NSI 文件看起来像:

...
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE inst_leave
!insertmacro MUI_PAGE_INSTFILES
...

随着inst_leave是这样的

Function inst_leave
    ...
FunctionEnd

这成功了。

相关内容

最新更新