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

时间:2016-02-12 12:58:36

标签: installation install installer customization nsis

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

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

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

替代:如果无法做到这一点,那么我可以通过以下方式确定:如果用户说"否"在安装过程中,安装程序应返回目录页面询问不同的目录。

这是我当前的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."

谢谢。

1 个答案:

答案 0 :(得分:0)

如果你查看MUI documentation中的“页面自定义函数”部分,你会发现一些定义的名称,你可以在每页上设置这些名称来调用自定义函数。您需要MUI_PAGE_CUSTOMFUNCTION_SHOWMUI_PAGE_CUSTOMFUNCTION_LEAVE,具体取决于您希望功能运行的时间。

!insertmacro MUI_PAGE_WELCOME
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE CleanInstallationDirectory
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"

如果您在自定义休假功能中拨打Abort,则可以阻止安装程序转到下一页。