【发布时间】:2021-04-04 21:42:41
【问题描述】:
我有以下代码
ClearErrors
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Office\ClickToRun\Configuration" "ProductReleaseIds"
IfErrors done ;+19 if error
${StrLoc} $R1 $R0 "365" ">"
StrCmp $R1 "" next 0 ;+8 if substring is not found
ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Office\ClickToRun\Configuration" "Platform"
${If} $R1 = "x86"
StrCpy $R1 "365x32"
${Else}
StrCpy $R1 "365x64"
${EndIf}
Goto found_${ID}
next: ${StrLoc} $R1 $R0 "2019" ">"
StrCmp $R1 "" done 0 ;+8 if substring is not found
ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Office\ClickToRun\Configuration" "Platform"
${If} $R1 = "x86"
StrCpy $R1 "2019x32"
${Else}
StrCpy $R1 "2019x64"
${EndIf}
Goto found_${ID}
done: ClearErrors
即使在代码编译过程中没有出现错误/警告,代码行为也不如预期。经过 2 小时的“富有想象力”的调试,我明白了我遇到的奇怪行为的原因。
在最后的代码中,我使用了“下一步”和“完成”标签,我的所有问题都消失了!一开始我使用数字来跳跃(请查看 cmets 字符串中的数字,这些数字应该可以工作,但实际上却没有用!)。
有谁知道这些用于跳跃的数字是错误的原因吗?
在正常情况下,我发誓我数到 20 是没有问题的,但似乎情况并非如此 :)
【问题讨论】: