私はこの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}
サイレントモードに変更したいです。サイレント モードでは、メッセージ ボックスが自動的に CANCEL で終了するようにしたいと思います。したがって、ドキュメントによると、行末に/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
これは、この構文では、ユーザー対話モードと同じ構文で分岐されるためです。ただし、どちらも機能していないようです。
フラグの何が問題になっていますか?どうすれば修正できますか? 代わりにジャンプのある構文を使用する必要がありますか?