此脚本检查: 版本字符串的长度至少为 3 个字符。 版本字符串不为空。 该版本包含句点。 之前的人物。是数字。 除了最后一个字符之外的所有字符都是数字或句点。 后的最后一个字符。是数字或字母。(数字最后的数字) 如果条件无法解决问题
${If} $sVersion == ""
MessageBox MB_OK "You can't leave Version blank"
Abort
${EndIf}
StrCpy $R1 $sVersion
Strlen $R2 $R1
${If} $R2 < 3
MessageBox MB_OK "Version must be atleast 3 characters long including a period ."
Abort
${EndIf}
${StrContains} $R0 $R1 "."
${If} $R0 == -1
MessageBox MB_OK "Version must contain a digit"
Abort
${EndIf}
StrCpy $R3 0
loop:
StrCpy $R4 $R1 1 $R3
${If} $R4 == "."
Goto checkLastChar
${EndIf}
${If} $R4 < "0"
${OrIf} $R4 > "9"
MessageBox MB_OK "All Characters Before the Period . must be a digit"
Abort
${EndIf}
IntOp $R3 $R3 + 1
StrCmp $R3 $R0 loop
checkLastChar:
StrCpy $R5 $R1 1 $R2
${If} $R5 < "0"
${OrIf} $R5 > "9"
${AndIf} $R5 < "a"
${OrIf} $R5 > "z"
${AndIf} $R5 < "A"
${OrIf} $R5 > "Z"
MessageBox MB_OK "The last character must be a digit or a letter"
Abort
${EndIf}
end_loop:
功能结束
如果您的 $sVersion 只能是有限数量的数字,您可以在 switch 中执行此操作。
${Switch} $sVersion
${Case} "3.3"
MessageBox MB_OK "Version is correct.
${Break}
${Case} "1.b"
MessageBox MB_OK "Version is wrong.
${Break}
${EndSwitch}
只需以这种方式添加所有可能的情况,并添加关于每种情况应该发生什么的逻辑。