Не используйте $INSTDIR как переменную для возвращаемых значений и будет вам счастье
У вас же есть $0-$9, $R0-R9...
Код:
![Выделить весь код](images/misc/selectcode.png)
Function Button
${If} $Radio == 1
Pop $Button
nsDialogs::SelectFolderDialog "Выберите папку для установки:" "$INSTDIR"
Pop $0
${If} $0 != error
${NSD_SetText} $Text3 "$0\${APP}"
StrCpy $INSTDIR "$0\${APP}"
${EndIf}
${EndIf}
FunctionEnd