簡體   English   中英

NSIS - 強制用戶選擇其他目錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM