NSIS ограничить установку папки - PullRequest
2 голосов
/ 31 марта 2012

У меня есть установщик NSIS, над которым я работаю, и я должен иметь возможность предотвратить установку в папки с ошибками пользователя (например, $ SYSDIR, $ WINDIR, $ DESKTOP и т. Д.) *

Я хочу, чтобы они могли выбрать путь установки, но просто отключить следующую кнопку, если они выбрали местоположение, как указано выше. Я искал везде и не могу найти ответ на этот вопрос.

Я пытался использовать это, но я все еще могу установить на рабочий стол:

!define MUI_PAGE_CUSTOMFUNCTION_LEAVE MyDirLeave
!insertmacro MUI_PAGE_DIRECTORY
...
Function MyDirLeave
  Push $0
    StrLen $0 $DESKTOP
    StrCpy $0 $INSTDIR $0
    StrCmp $0 $DESKTOP 0 proceed
    MessageBox MB_ICONSTOP|MB_OK \
        "Installation on DESKTOP is not allowed, choose another directory"
    Abort
    proceed:
  Pop $0
FunctionEnd

1 Ответ

3 голосов
/ 31 марта 2012

Используйте функцию обратного вызова .onVerifyInstDir .

Редактировать:

Function .onVerifyInstDir
StrLen $0 $Desktop
StrCpy $0 $INSTDIR $0
StrCmp $0 $Desktop 0 PathGood
Abort
PathGood:
FunctionEnd
...