У меня есть этот скрипт 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
в той же строке. Это связано с тем, что с этим синтаксисом он разветвляется с тем же синтаксисом, что и в режиме взаимодействия с пользователем. Однако, похоже, он тоже не работает.
Что не так с моим флагом, как я могу это исправить? Должен ли я вместо этого использовать синтаксис с переходом?