NSIS Installer: 运行 安装前目录页的一个函数
NSIS Installer: Run a function at the directory page before installation
我创建了一个非常简单的安装程序,它没有添加任何注册表项或任何东西。它只是安装一些 python 可执行程序的一些文件。安装程序仅包含询问安装目录然后安装软件的 1 个步骤。
问题:如果安装了以前版本的程序或用户选择的目录中包含文件,我想通过[=38进行一些检查=]在安装开始前CleanInstallationDirectory
安装一个函数。
我的问题是:我怎么才能运行在用户选择目录的时候有那个功能,安装后没有进步开始?我想 运行 那个函数,并且基于那个函数的 return 或基于那个函数的内部调用显示一条消息,确认该目录中的所有内容都将被删除,然后如果用户确认,那么安装开始。
替代方案:如果无法做到这一点,那么我可以接受以下内容:如果用户在安装过程中说 "No",安装程序应该返回目录页面询问其他目录。
这是我当前的 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 documentation 中的 "Page Custom Functions" 部分,您会发现一些可以在每页基础上设置的定义的名称,这些定义将调用自定义函数。您需要 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
,您可以阻止安装程序进入下一页。
我创建了一个非常简单的安装程序,它没有添加任何注册表项或任何东西。它只是安装一些 python 可执行程序的一些文件。安装程序仅包含询问安装目录然后安装软件的 1 个步骤。
问题:如果安装了以前版本的程序或用户选择的目录中包含文件,我想通过[=38进行一些检查=]在安装开始前CleanInstallationDirectory
安装一个函数。
我的问题是:我怎么才能运行在用户选择目录的时候有那个功能,安装后没有进步开始?我想 运行 那个函数,并且基于那个函数的 return 或基于那个函数的内部调用显示一条消息,确认该目录中的所有内容都将被删除,然后如果用户确认,那么安装开始。
替代方案:如果无法做到这一点,那么我可以接受以下内容:如果用户在安装过程中说 "No",安装程序应该返回目录页面询问其他目录。
这是我当前的 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 documentation 中的 "Page Custom Functions" 部分,您会发现一些可以在每页基础上设置的定义的名称,这些定义将调用自定义函数。您需要 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
,您可以阻止安装程序进入下一页。