Имам този NSIS скрипт:
Section "!${SECTION_MAIN}" sectionMainID
SetOutPath "$INSTDIR"
whileRuns:
LockedList::FindProcess "$INSTDIR\bin\${PRODUCT_NAME}.exe"
Pop $R0
${If} $R0 != ``
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "this is running. Please close it first." IDOK OK IDCANCEL CANCEL
OK:
Goto whileMLRuns
CANCEL:
Abort
${EndIf}
Бих искал да го променя на безшумен режим. В безшумен режим бих искал кутията за съобщения автоматично да завършва с ОТКАЗ. така че, според документ, сложих флаг /SD
с командата IDCANCEL
в края на реда с MessageBox
вътре. така:
Section "!${SECTION_MAIN}" sectionMainID
SetOutPath "$INSTDIR"
whileRuns:
LockedList::FindProcess "$INSTDIR\bin\${PRODUCT_NAME}.exe"
Pop $R0
${If} $R0 != ``
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "this is running. Please close it first." IDOK OK IDCANCEL CANCEL /SD IDCANCEL
OK:
Goto whileMLRuns
CANCEL:
Abort
${EndIf}
Това обаче се проваля. И така, промених го на
Section "!${SECTION_MAIN}" sectionMainID
SetOutPath "$INSTDIR"
whileRuns:
LockedList::FindProcess "$INSTDIR\bin\${PRODUCT_NAME}.exe"
Pop $R0
${If} $R0 != ``
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "this is running. Please close it first." IDOK OK IDCANCEL CANCEL /SD CANCEL
OK:
Goto whileMLRuns
CANCEL:
Abort
${EndIf}
с вече CANCEL
вместо IDCANCEL
в същия ред. Това е така, защото с този синтаксис той е разклонен със същия синтаксис като в режим на взаимодействие с потребителя. Изглежда обаче, че и той не работи.
Какво не е наред с моя флаг, как мога да го поправя? Трябва ли вместо това да използвам синтаксис със скок?