使用NSIS安装时如何仅从“浏览”对话框中显示本地驱动器和文件夹?

问题描述 投票:0回答:1

使用NSIS安装后打开浏览对话框,它显示驱动程序,文件夹,映射驱动器,可移动驱动器和网络文件夹的列表。如何过滤它并仅显示“浏览”对话框中的本地驱动器和文件夹?

nsis
1个回答
0
投票

您无法更改目录页面的工作方式,如果要过滤文件夹对话框,则必须编写自定义页面和自定义插件。

但是,您可以验证目录并阻止用户移动到下一页:

!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存储设备将识别为固定驱动器。

即使您执行了所有这些操作,也无法阻止人们安装到其他驱动器类型。他们可以暂时更改他们的驱动器号,安装,然后将其更改回来等。

© www.soinside.com 2019 - 2024. All rights reserved.