我创建了一个非常简单的安装程序,它不会添加任何注册表项或任何内容。它只是安装了一些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."
谢谢。
答案 0 :(得分:0)
如果你查看MUI documentation中的“页面自定义函数”部分,你会发现一些定义的名称,你可以在每页上设置这些名称来调用自定义函数。您需要MUI_PAGE_CUSTOMFUNCTION_SHOW
或MUI_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
,则可以阻止安装程序转到下一页。