2016-02-12 79 views
0

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

问题:如果程序的早期版本的安装或由用户选择的目录中包含它的文件,我想通过运行一个函数CleanInstallationDirectory安装开始之前做一些检查。

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

替代:如果这是不可能做到这一点,那么我用下面的确定:如果用户说,在安装过程中“否”,安装程序应该回到目录页面,询问关于不同目录。

下面是当前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." 

谢谢。

回答

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

相关问题