![](/img/trans.png)
[英]Why does NSIS installer run twice for two application installation even if only one app checkbox is selected?
[英]NSIS Installer: Run a function at the directory page before installation
我創建了一個非常簡單的安裝程序,它不添加任何注冊表項或任何內容。 它只是安裝一些python可執行程序的文件。 安裝程序僅包含第一步,詢問安裝目錄,然后安裝軟件。
問題 :如果安裝了程序的先前版本,或者用戶選擇的目錄中包含文件,我想通過在安裝開始之前運行功能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."
謝謝。
如果您在MUI文檔的“頁面自定義功能”部分中查找,則會找到一些定義的名稱,您可以在每頁的基礎上進行設置,以調用自定義功能。 您希望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
,則可以防止安裝程序進入下一頁。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.