Я хотел бы знать, как использовать YESNOCANCEL MessageBox в сочетании с логикой IF из LogicLib.nsh в сценариях установщика NSIS, чтобы избежать использования меток и gotos.
Есть ли способ зафиксировать результат MessageBox в какой-либо переменной?
Кроме того, я знаю, что есть вещи получше, чем NSIS, но на данный момент невозможно использовать что-то еще. знак равно
Обратите внимание на {WHAT GOES HERE??}
в приведенном ниже коде. Если бы это было просто «Если ... Иначе ...», все сработало бы нормально.
Спасибо за помощь
${If} ${Cmd} `MessageBox MB_YESNOCANCEL|MB_ICONEXCLAMATION
"PROGRAM X is already installed. Click YES to remove the installed version
found in C:\Program Files(x86). Click NO to skip uninstall and choose a
different install location (not recommended) or CANCEL to terminate
the installer." IDYES`
MessageBox MB_OK "Yes was clicked"
${ElseIf} {WHAT GOES HERE??}
MessageBox MB_OK "No was clicked"
${Else}
MessageBox MB_OK "Cancel was clicked"
${EndIf}
Обновление: я тоже нашел этот пример, но не уверен, что ${||}
делает и как он может мне помочь.
; ifcmd..||..| and if/unless cmd
StrCpy $R2 ""
${IfCmd} MessageBox MB_YESNO "Please click Yes" IDYES ${||} StrCpy $R2 $R2A ${|}
${Unless} ${Cmd} `MessageBox MB_YESNO|MB_DEFBUTTON2 "Please click No" IDYES`
StrCpy $R2 $R2B
${EndUnless}
${If} $R2 == "AB"
DetailPrint "PASSED IfCmd/If Cmd test"
${Else}
DetailPrint "FAILED IfCmd/If Cmd test"
${EndIf}
edit
на свой вопрос и добавьте туда свой код. - person gideon   schedule 26.03.2011