0

为了优化我的 MUI 2 NSIS 设置,我在回调函数ExecWait中进行了一些调用,我在文档中搜索以找到一个被调用的回调:.onInstSuccess

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

不幸的是,我没有找到这样的回调。

因此我的问题是:

是否可以在复制文件之后和从文件复制页面切换向导页面之前进行一些自定义处理?

4

2 回答 2

1

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

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

这成功了。

于 2012-10-01T08:20:36.757 回答
1

使用MUI_PAGE_CUSTOMFUNCTION_LEAVE是好的。这实际上取决于您是否希望在日志中打印“已完成”之前或之后执行操作。对于前者,您可以将代码粘贴在最后一节中:

Section
SetOutPath $Instdir
File "Foo"
File "Bar"

ExecWait '"$Instdir\dofinalthing.exe" /blah'
SectionEnd

或者

Section
SetOutPath $Instdir
File "Foo"
File "Bar"
SectionEnd

Section -post
ExecWait '"$Instdir\dofinalthing.exe" /blah'
SectionEnd

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

于 2012-10-01T15:35:59.247 回答