Installation NSIS安装程序:安装前在目录页上运行一个函数

Installation NSIS安装程序:安装前在目录页上运行一个函数,installation,customization,nsis,Installation,Customization,Nsis,我创建了一个非常简单的安装程序,它不添加任何注册表项或任何东西。它只是安装一些python可执行程序的一些文件。安装程序只包含一个步骤,询问安装目录,然后安装软件 问题:如果安装了以前版本的程序或用户选择的目录中包含文件,我希望在安装开始之前运行函数cleanstallationdirectory进行一些检查 我的问题是:在安装过程开始后,当用户选择目录而不是时,我如何运行该功能?我想运行该函数,并根据该函数的返回或基于该函数的内部调用显示一条消息,确认该目录中的所有内容都将被删除,如果用户确认

我创建了一个非常简单的安装程序,它不添加任何注册表项或任何东西。它只是安装一些python可执行程序的一些文件。安装程序只包含一个步骤,询问安装目录,然后安装软件

问题:如果安装了以前版本的程序或用户选择的目录中包含文件,我希望在安装开始之前运行函数
cleanstallationdirectory
进行一些检查

我的问题是:在安装过程开始后,当用户选择目录而不是时,我如何运行该功能?我想运行该函数,并根据该函数的返回或基于该函数的内部调用显示一条消息,确认该目录中的所有内容都将被删除,如果用户确认,则安装开始

备选方案:如果不可能做到这一点,那么我同意以下几点:如果用户在安装过程中说“不”,安装程序应该返回目录页面询问其他目录

以下是我目前拥有的NSIS安装程序脚本:

  Function CleanInstallationDirectory

## do stuff

  FunctionEnd


  Name "My Software"
  OutFile "GNOMEAcqInstaller.exe"

  InstallDir "D:\MySoftware"

  RequestExecutionLevel admin



  !define MUI_ABORTWARNING

  !insertmacro MUI_PAGE_DIRECTORY
  !insertmacro MUI_PAGE_INSTFILES

  !insertmacro MUI_LANGUAGE "English"



Section "Installation" InstallSection

  SetOutPath "$INSTDIR"

  Call CleanInstallationDirectory

  File /r "MyFiles\*"
SectionEnd

  LangString DESC_SecDummy ${LANG_ENGLISH} "A test section."
谢谢。

如果您查看中的“页面自定义函数”部分,您将发现一些定义的名称,您可以在每页的基础上设置这些定义,这些定义将调用自定义函数。您希望
MUI_页面\u自定义功能\u显示
MUI_页面\u自定义功能\u离开
,具体取决于您希望函数运行的时间

!insertmacro MUI_PAGE_WELCOME
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE CleanInstallationDirectory
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
如果在自定义休假功能中调用
Abort
,则可以阻止安装程序转到下一页