Как отображать только локальные диски и папки из диалогового окна «Обзор» при установке с использованием NSIS? - PullRequest
0 голосов
/ 05 марта 2019

При открытии диалогового окна просмотра при установке с использованием NSIS отображается список драйверов, папок, подключенных дисков, съемных дисков и сетевых папок.Как отфильтровать его и показать только локальные диски и папки из диалогового окна «Обзор»?

1 Ответ

0 голосов
/ 05 марта 2019

Вы не можете изменить способ работы страницы каталога, вам придется написать пользовательскую страницу и пользовательский плагин, если вы хотите отфильтровать диалог папки.

Однако вы можете проверить каталог и заблокироватьпереход пользователя на следующую страницу:

!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-устройства хранения данных будут идентифицироваться как фиксированный диск.

Даже если выделать все это, вы не можете остановить людей от установки на другой тип диска.Они могут временно поменять свои буквы дисков, установить, а затем изменить их обратно и т. Д.

...