试图优化我的 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
这成功了。