[英]NSIS - force user to select a different directory
到目前為止,我已經找到了如何通過讀取注冊表項來檢測以前的軟件安裝,並測試該目錄是否存在。 (兩者都在NSIS幫助文件中有詳細記錄)。 現在我想強制用戶指定一個不同的目錄,如果以前安裝了該應用程序。 (不想自己強制卸載,因為以前的版本只刪除包括已保存數據在內的所有內容)。
據我所知,MUI2.nsh中有預定義的模板,用於許可證,安裝文件夾,進度指示器等。如何在安裝程序流程的此階段添加驗證?
更新 - 嘗試了保羅的解決方案,但它不起作用。 在腳本的頂部,我已經聲明了
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE validateDirectory
!insertmacro MUI_PAGE_DIRECTORY
引用此功能:
Function validateDirectory
ReadRegStr $R0 HKLM "SOFTWARE\Aadhaar Enrolment Client" "Installdir"
Pop $R0
StrCmp $R0 $OUTDIR +1 +3
MessageBox MB_ICONSTOP|MB_OK 'The directory $OUTDIR already exists.Please choose a different directory.'
Abort
FunctionEnd
此功能顯示消息,但不會中止。 此外,如果我在目錄選擇頁面中單擊“返回”並再次單擊向前,則只需繼續安裝。
您需要像這樣為目錄頁面指定“離開”功能
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE LeaveDirectory
!insertmacro MUI_PAGE_DIRECTORY
這將調用單擊“下一步”按鈕時指定的函數。
然后使用驗證所選目錄所需的邏輯創建LeaveDirectory函數,如果確定目錄無效,只需在函數中調用Abort,安裝程序將不會繼續執行下一步。
該文檔位於此頁面的“自定義函數”部分下,但由於您必須展開“頁面自定義函數”標題,遺憾的是並不明顯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.