2012-03-30 2 views
1

У меня есть установщик NSIS Я работаю на том, что мне нужно, чтобы быть в состоянии предотвратить установку на «ошибки пользователя» папки (т.е. $ SysDir, $ WINDIR, $ DESKTOP и т.д ...)NSIS ограничить установки папки

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

Я пытался использовать это, но я до сих пор можно установить на рабочий стол:

!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 

ответ

3

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

Edit:

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

Я пытался получить .onVerifyInstDir работать с этим, используя толчок, чтобы установить проверку выбранного каталога, а затем проверить его, но он не был активно предотвращая установку в этих папках .. – user1304228

+0

Вы вызываете прерывание? – Anders

+0

Это как раз то, что я включил, мне нужно вызвать прерывание другим способом? – user1304228

Смежные вопросы