2016-02-12 133 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

相關問題