NSIS для проверки места установки пусто или нет - PullRequest
0 голосов
/ 13 июня 2018

Как добавить функциональность для отображения диалогового окна переопределения для места установки.

Если пользователь уже установил программное обеспечение, и он пытается переустановить программное обеспечение в том же месте, то я хотел показать информацию, нужно ли перезаписывать или нет?

Я использовал нижефункция, но она вызывается перед открытием страницы местоположения.

Function .onVerifyInstDirIfFileExists "$INSTDIR\temp.xls" PathGood
PathGood:
    MessageBox MB_OKCANCEL "Do you want to overwrite the location with new installer ?" IDOK lbl_ok IDCANCEL lbl_cancel
    lbl_ok:

    lbl_cancel:
    Quit
FunctionEnd 

1 Ответ

0 голосов
/ 13 июня 2018

.onVerifyInstDir используется для отключения кнопки «Далее», на ней не должен отображаться пользовательский интерфейс:

Этот код будет вызываться каждый раз, когда пользователь меняет каталог установки, поэтому он ничего не должен делатьбез ума от MessageBox и т.п.Если эта функция вызывает Abort, путь установки в $ INSTDIR считается недействительным.

Если вы хотите отобразить сообщение, вы должны использовать вместо этого обратный вызов страницы:

!include LogicLib.nsh

Function MyDirLeave
${If} ${FileExists} "$INSTDIR\temp.xls"
    MessageBox MB_OKCANCEL "Do you want to overwrite the location with new installer?" IDOK +2
    Abort ; Stay on the current page
${EndIf}
FunctionEnd

Page Directory "" "" MyDirLeave
Page InstFiles
...