簡體   English   中英

使用NSIS安裝時,如何在“瀏覽”對話框中僅顯示本地驅動器和文件夾?

[英]How to show only local drives and folders from the Browse dialog when installing using NSIS?

使用NSIS安裝時打開瀏覽對話框后,它將顯示驅動程序,文件夾,映射的驅動器,可移動驅動器和網絡文件夾的列表。 如何過濾它並從“瀏覽”對話框中僅顯示本地驅動器和文件夾?

您無法更改目錄頁面的工作方式,如果要過濾文件夾對話框,則必須編寫一個自定義頁面和一個自定義插件。

但是,您可以驗證目錄並阻止用戶進入下一頁:

!include LogicLib.nsh
Page Directory
Page InstFiles

!define /IfNDef DRIVE_FIXED 3
Function .onVerifyInstDir
StrCpy $0 $InstDir 1 
System::Call 'KERNEL32::GetDriveType(t"$0:\")i.r0'
${If} $0 <> ${DRIVE_FIXED}
    Abort
${EndIf}
FunctionEnd

在這種特定情況下,這可能不是一個好主意,因為用戶不知道為什么他們不能單擊“下一步/安裝”按鈕。

相反,當用戶嘗試離開頁面時,您應該停止顯示消息:

!include LogicLib.nsh
Page Directory "" "" ValidateDirPage
Page InstFiles

!define /IfNDef DRIVE_FIXED 3
Function ValidateDirPage
StrCpy $0 $InstDir 1 
System::Call 'KERNEL32::GetDriveType(t"$0:\")i.r0'
${If} $0 <> ${DRIVE_FIXED}
    MessageBox MB_ICONSTOP "You must specify a local fixed drive for some reason!"
    Abort
${EndIf}
FunctionEnd

注意:某些USB存儲設備將被標識為固定驅動器。

即使完成所有這些操作,也無法阻止人們將其安裝到其他驅動器類型。 他們可以臨時更改驅動器號,進行安裝,然后將其改回等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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