До сих пор я понял, как определить предыдущую установку моего программного обеспечения, прочитав ключи реестра и проверив, существует ли каталог. (Оба хорошо задокументированы в файле справки NSIS). Теперь я хочу заставить пользователя указать другой каталог, если приложение было установлено ранее. (Не хочу принудительно удалять самостоятельно, потому что предыдущие версии просто удаляли все, включая сохраненные данные).
Насколько я понимаю, в MUI2.nsh есть предопределенные шаблоны для лицензии, папки установки, индикатора выполнения и т. Д. Как мне добавить проверку на этом этапе в поток установщика?
Обновление. Пробовал решение Пола, но оно не работает. В верхней части сценария я объявил
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE validateDirectory
!insertmacro MUI_PAGE_DIRECTORY
чтобы обратиться к этой функции:
Function validateDirectory
ReadRegStr $R0 HKLM "SOFTWARE\Aadhaar Enrolment Client" "Installdir"
Pop $R0
StrCmp $R0 $OUTDIR +1 +3
MessageBox MB_ICONSTOP|MB_OK 'The directory $OUTDIR already exists.Please choose a different directory.'
Abort
FunctionEnd
Эта функция отображает сообщение, но не прерывается. Более того, если я нажму «назад» на странице выбора каталога и снова нажму «вперед», то установка просто продолжится.